Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk Menyelesaikan "argumen OUT atau INOUT ... bukan pembolehubah" Ralat Apabila Memanggil Prosedur Tersimpan dengan PDO?

Bagaimana untuk Menyelesaikan "argumen OUT atau INOUT ... bukan pembolehubah" Ralat Apabila Memanggil Prosedur Tersimpan dengan PDO?

Linda Hamilton
Linda Hamiltonasal
2024-11-07 00:38:03185semak imbas

How to Resolve

Memanggil Prosedur Tersimpan dengan Parameter Keluar Menggunakan PDO

Soalan ini meneroka isu yang dihadapi semasa cuba memanggil prosedur tersimpan dengan parameter output menggunakan PDO dalam PHP. Mesej ralat "SQLSTATE[42000]: Ralat sintaks atau pelanggaran akses: 1414 OUT atau INOUT argumen 1 untuk mydb.proc_OUT rutin bukan pembolehubah atau pembolehubah pseudo BARU dalam SEBELUM pencetus" timbul.

Untuk menyelesaikan masalah ini isu, langkah berikut dicadangkan:

  1. Gunakan pertanyaan berasingan untuk mendapatkan semula parameter output: Daripada mengikat parameter output secara langsung, laksanakan pertanyaan lain untuk mendapatkan semula nilai parameter output selepas melaksanakan prosedur tersimpan. Contohnya:
$dbh->query("CALL SomeStoredProcedure($someInParameter1, $someInParameter2, @someOutParameter)");
$dbh->query("SELECT @someOutParameter");
  1. Sisipkan "SELECT @someOutParameter" dalam prosedur tersimpan: Sebagai alternatif, masukkan "SELECT @someOutParameter" ke dalam prosedur tersimpan dan kemudian ikat keputusan kepada parameter output menggunakan pernyataan yang disediakan. Contohnya:
$stmt = $dbh->prepare("CALL SomeStoredProcedure(?, ?)");
$stmt ->execute(array($someInParameter1, $someInParameter2));

Dengan melaksanakan penyelesaian ini, ralat yang berkaitan dengan parameter output dalam prosedur tersimpan harus diselesaikan.

Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan "argumen OUT atau INOUT ... bukan pembolehubah" Ralat Apabila 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