คู่มือการเข้าถึงค่า OUT ใน PHP กับ MySQL Stored Procedures

การใช้ stored procedures ใน MySQL สามารถเพิ่มประสิทธิภาพการเชื่อมต่อกับฐานข้อมูลของคุณได้อย่างมาก อย่างไรก็ตาม หากคุณกำลังทำงานกับพารามิเตอร์ OUT คุณอาจพบว่ามันท้าทายในการดึงค่าของพวกเขาโดยใช้ PHP ในบล็อกโพสต์นี้เราจะสำรวจวิธีการเข้าถึงพารามิเตอร์ OUT เหล่านี้อย่างมีประสิทธิภาพ โดยให้คุณมีคู่มือที่ชัดเจนแบบทีละขั้นตอน

เข้าใจปัญหา

เมื่อคุณสร้าง stored procedure ใน MySQL มันสามารถมีพารามิเตอร์อินพุต (IN) และพารามิเตอร์เอาท์พุต (OUT) พารามิเตอร์ OUT จะถูกออกแบบมาเพื่อคืนค่ากลับจาก stored procedure ไปยังผู้เรียก แต่น่าเสียดายที่เอกสารเกี่ยวกับการทำงานร่วมกันระหว่าง PHP และ MySQL stored procedures มักจะขาดความละเอียด ทำให้ยากที่จะดึงพารามิเตอร์ OUT เหล่านี้ได้อย่างมีประสิทธิภาพ

ปัญหาที่เรียบง่าย

เช่น ถ้าคุณมี stored procedure ที่กำหนดไว้ว่าดังนี้:

myproc(IN i int, OUT j int)

คุณอาจสงสัยว่า “ฉันจะเข้าถึงค่าผลลัพธ์ ‘j’ จาก procedure นี้โดยใช้ PHP ได้อย่างไร?”

วิธีการ: การเข้าถึงพารามิเตอร์ OUT

เพื่อนำค่าจากพารามิเตอร์ OUT ใน MySQL โดยใช้ส่วนขยาย MySQLi ของ PHP คุณสามารถทำตามขั้นตอนด้านล่างได้

ขั้นตอนที่ 1: สร้างการเชื่อมต่อกับฐานข้อมูล

ก่อนอื่น คุณต้องเชื่อมต่อกับฐานข้อมูล MySQL โดยใช้คลาส mysqli ใช้เทมเพลตต่อไปนี้:

$mysqli = new mysqli("HOST", "USR", "PWD", "DBNAME");

ให้แน่ใจว่าได้แทนที่ HOST, USR, PWD, และ DBNAME ด้วยข้อมูลรับรองฐานข้อมูลจริงของคุณ

ขั้นตอนที่ 2: เรียกใช้ Stored Procedure

คุณจะเรียกใช้ stored procedure ของคุณในขณะที่เลือกค่าของพารามิเตอร์ OUT ด้วย นี่คือวิธีที่คุณสามารถทำได้:

$ivalue = 1; // ค่าที่ใช้เป็นอินพุตสำหรับ procedure
$res = $mysqli->multi_query("CALL myproc($ivalue, @x); SELECT @x");

ในโค้ดนี้:

  • @x เป็นตัวแปรที่ผู้ใช้กำหนดใน MySQL ที่จะจัดเก็บค่าผลลัพธ์

ขั้นตอนที่ 3: ประมวลผลผลลัพธ์

หลังจากที่เรียกใช้ stored procedure ด้วย multi_query คุณต้องจัดการกับผลลัพธ์ ซึ่งรวมถึงการตรวจสอบว่าการเรียกใช้นั้นสำเร็จหรือไม่และดึงค่าพารามิเตอร์เอาท์พุต:

if ($res) {
  $results = 0;
  do {
    if ($result = $mysqli->store_result()) {
      printf("<b>ผลลัพธ์ #%u</b>:<br/>", ++$results);
      while ($row = $result->fetch_row()) {
        foreach ($row as $cell) echo $cell, "&nbsp;";
      }
      $result->close();
      if ($mysqli->more_results()) echo "<br/>";
    }
  } while ($mysqli->next_result());
}
$mysqli->close();

คำอธิบายของโค้ด:

// - เราใช้ลูปเพื่อทำงานกับผลลัพธ์และดึงค่าทีละค่า // - ฟังก์ชัน store_result() ถูกใช้เพื่อดึงชุดผลลัพธ์จากการสอบถามที่ดำเนินการแล้ว // - หลังจากประมวลผลชุดผลลัพธ์ เราจะปิดมันและตรวจสอบว่ามีผลลัพธ์เพิ่มเติมซึ่งอาจรวมถึงพารามิเตอร์ OUT

// ในที่สุด ให้ปิดการเชื่อมต่อกับฐานข้อมูลด้วย $mysqli->close();

สรุป

การเข้าถึงค่าจาก OUT ใน MySQL stored procedures ใน PHP อาจดูเหมือนน่ากลัวในตอนแรก แต่ด้วยวิธีการข้างต้น คุณสามารถทำได้อย่างง่ายดาย แนวทางรวมถึงการสร้างการเชื่อมต่อ เรียกใช้ stored procedure พร้อมกับตัวแปรที่ผู้ใช้กำหนด และการประมวลผลผลลัพธ์อย่างระมัดระวัง คู่มือนี้แบบทีละขั้นตอนจะเป็นเอกสารอ้างอิงที่มีประโยชน์สำหรับนักพัฒนาที่ทำงานกับ PHP และ MySQL stored procedures

หากคุณต้องการเจาะลึกในหัวข้อนี้หรือมีคำถามอื่น ๆ เกี่ยวกับ PHP และ MySQL โปรดอย่าลังเลที่จะสำรวจบล็อกของเราหรือทิ้งความคิดเห็นไว้ด้านล่าง!