คู่มือการเข้าถึงค่า 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, " ";
}
$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 โปรดอย่าลังเลที่จะสำรวจบล็อกของเราหรือทิ้งความคิดเห็นไว้ด้านล่าง!