Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mendapatkan Keluaran daripada Prosedur Tersimpan dengan Parameter OUT Menggunakan PDO?

Bagaimana untuk Mendapatkan Keluaran daripada Prosedur Tersimpan dengan Parameter OUT Menggunakan PDO?

Linda Hamilton
Linda Hamiltonasal
2024-11-07 08:12:02888semak imbas

How to Retrieve Output from Stored Procedures with OUT Parameters Using 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:

  1. Sediakan pernyataan PDO:

    $stmt = $db->prepare("CALL proc_OUT(?)");
  2. Ikat parameter OUT:

    $stmt->bindParam(1, $return_value, PDO::PARAM_STR, 4000);
  3. Laksanakan prosedur tersimpan:

    $stmt->execute();
  4. 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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn