Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mendapatkan Keluaran daripada Prosedur Tersimpan dengan Parameter OUT Menggunakan PDO?
Memanggil Prosedur Tersimpan dengan Parameter OUT Menggunakan PDO
Dalam pengaturcaraan pangkalan data, prosedur tersimpan adalah penting untuk merangkum operasi pangkalan data yang kompleks. Mendapatkan semula output daripada prosedur tersimpan menggunakan PDO boleh menjadi mencabar.
Masalah:
Apabila memanggil prosedur tersimpan dengan parameter OUT menggunakan PDO, anda mungkin menghadapi ralat seperti:
PDOException: SQLSTATE[42000]: Syntax error or access violation: 1414 OUT or INOUT argument 1 for routine mydb.proc_OUT is not a variable or NEW pseudo-variable in BEFORE trigger
Penyelesaian:
PDO menjangkakan parameter OUT akan diambil menggunakan pertanyaan berasingan. Langkah berikut menggariskan pendekatan yang betul:
Sediakan pernyataan PDO:
$stmt = $db->prepare("CALL proc_OUT(?)");
Ikat parameter OUT:
$stmt->bindParam(1, $return_value, PDO::PARAM_STR, 4000);
Laksanakan prosedur tersimpan:
$stmt->execute();
Soal parameter OUT:
$stmt2 = $db->query("SELECT @return_value"); $row = $stmt2->fetch(PDO::FETCH_NUM); $return_value = $row[0];
Contoh:
Berikut ialah contoh memanggil prosedur tersimpan dengan parameter OUT:
$db = new PDO("mysql:host=localhost;dbname=mydb", "username", "password"); // Stored procedure definition $sql = "CREATE PROCEDURE proc_OUT (OUT var1 VARCHAR(100)) BEGIN SET var1 = 'This is a test'; END"; $db->query($sql); // Call the stored procedure $stmt = $db->prepare("CALL proc_OUT(?)"); $stmt->bindParam(1, $return_value, PDO::PARAM_STR, 4000); $stmt->execute(); // Query the OUT parameter $stmt2 = $db->query("SELECT @return_value"); $row = $stmt2->fetch(PDO::FETCH_NUM); $return_value = $row[0]; echo $return_value; // Output: 'This is a test'
Dengan mengikuti pendekatan ini, anda boleh berjaya memanggil prosedur tersimpan dengan parameter OUT menggunakan PDO.
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Keluaran daripada Prosedur Tersimpan dengan Parameter OUT Menggunakan PDO?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!