Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Membetulkan Ralat 'KELUAR atau INOUT...bukan pembolehubah' Semasa Memanggil Prosedur Tersimpan dengan PDO?

Bagaimana untuk Membetulkan Ralat 'KELUAR atau INOUT...bukan pembolehubah' Semasa Memanggil Prosedur Tersimpan dengan PDO?

Susan Sarandon
Susan Sarandonasal
2024-11-07 05:21:03309semak imbas

How to Fix

Memanggil Prosedur Tersimpan dengan Parameter Keluar Menggunakan PDO: Pepijat Selesai

Walaupun mengikut manual PDO, anda mungkin menghadapi hujah "OUT atau INOUT ...bukan pembolehubah" ralat apabila memanggil prosedur tersimpan dengan parameter output. Ini mungkin disebabkan oleh pepijat dalam versi PHP dan MySQL yang lebih awal.

Untuk menyelesaikan isu ini, laksanakan penyelesaian berikut:

  1. Dalam prosedur tersimpan, tambahkan SELECT pernyataan untuk parameter output. Contohnya:
DELIMITER //  
CREATE PROCEDURE `proc_OUT` (OUT var1 VARCHAR(100))  
BEGIN  
    SET var1 = 'This is a test';  
    SELECT var1;  -- Select added to retrieve the output parameter
END //  
  1. Dalam kod PHP anda, gunakan kaedah PDO execute() biasa untuk memanggil prosedur tersimpan tanpa mengikat parameter output:
$stmt = $db->prepare("CALL proc_OUT(?)");
$stmt->bindParam(1, $return_value, PDO::PARAM_STR, 4000);
$stmt->execute();
  1. Selepas melaksanakan prosedur tersimpan, dapatkan semula parameter output menggunakan panggilan query() berasingan:
$result = $db->query("SELECT var1 FROM proc_OUT");
foreach ($result as $row) {
    echo $row['var1'];
}

Atas ialah kandungan terperinci Bagaimana untuk Membetulkan Ralat 'KELUAR atau INOUT...bukan pembolehubah' Semasa Memanggil Prosedur Tersimpan dengan 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