Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk Mendapatkan Pembolehubah Output daripada MySQL Stored Procedures dalam PHP dengan PDO?

Bagaimana untuk Mendapatkan Pembolehubah Output daripada MySQL Stored Procedures dalam PHP dengan PDO?

Linda Hamilton
Linda Hamiltonasal
2024-11-06 09:57:02240semak imbas

How to Retrieve Output Variables from MySQL Stored Procedures in PHP with PDO?

Mendapatkan semula Pembolehubah Output Prosedur Tersimpan dalam PHP dengan PDO

Objektif: Ambil nilai LAST_INSERT_ID() daripada prosedur tersimpan MySQL dan tetapkan kepada pembolehubah PHP.

Pernyataan Masalah

Walaupun kod PHP yang disediakan menggunakan pengikatan PDO, ia gagal menangkap pembolehubah output LAST_INSERT_ID() daripada prosedur tersimpan SimpleProcedure.

Penjelasan

Mengambil pembolehubah output daripada prosedur tersimpan MySQL dalam PHP PDO melibatkan proses dua peringkat:

  1. Melaksanakan prosedur tersimpan dan menetapkan pembolehubah output kepada pembolehubah pengguna MySQL.
  2. Menyiasat pembolehubah pengguna MySQL untuk mendapatkan semula nilainya ke dalam pembolehubah PHP.

Penyelesaian: Proses Dua Peringkat

Peringkat 1: Melaksanakan Prosedur

$stmt = $db->prepare("CALL simpleProcedure(:name, @returnid)");
$stmt->bindValue(':name', $name, PDO::PARAM_STR);
$stmt->bindParam(':returnid', $returnid, PDO::PARAM_INT, 11, PDO::PARAM_INOUT);  // Note the PDO::PARAM_INOUT
$stmt->execute();

Dengan mengikat pemegang tempat :returnid sebagai INOUT, PDO bukan sahaja akan menghantar pembolehubah PHP kepada prosedur tetapi juga mengemas kininya dengan nilai pembolehubah output.

Peringkat 2: Mendapatkan semula Pembolehubah Output

$sql = "SELECT @returnid AS output_id";
$result = $db->query($sql)->fetch(PDO::FETCH_ASSOC);

$lastInsertId = $result['output_id'];

Soal pembolehubah pengguna MySQL @returnid untuk menetapkan nilainya kepada pembolehubah PHP $lastInsertId.

Nota

Mengikat pembolehubah PHP ke INOUT dan parameter OUT untuk prosedur MySQL boleh menghadapi ralat masa jalan. Adalah disyorkan untuk hanya mengikat pembolehubah kepada parameter IN.

Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Pembolehubah Output daripada MySQL Stored Procedures dalam PHP 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