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
Lepaskan: 2024-11-07 08:12:02
asal
899 orang telah melayarinya

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
Salin selepas log masuk

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(?)");
    Salin selepas log masuk
  2. Ikat parameter OUT:

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

    $stmt->execute();
    Salin selepas log masuk
  4. Soal parameter OUT:

    $stmt2 = $db->query("SELECT @return_value");
    $row = $stmt2->fetch(PDO::FETCH_NUM);
    $return_value = $row[0];
    Salin selepas log masuk

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'
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan