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
Lepaskan: 2024-11-07 05:21:03
asal
307 orang telah melayarinya

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 //  
Salin selepas log masuk
  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();
Salin selepas log masuk
  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'];
}
Salin selepas log masuk

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!

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