Objektif: Ambil nilai LAST_INSERT_ID() daripada prosedur tersimpan MySQL dan tetapkan kepada pembolehubah PHP.
Walaupun kod PHP yang disediakan menggunakan pengikatan PDO, ia gagal menangkap pembolehubah output LAST_INSERT_ID() daripada prosedur tersimpan SimpleProcedure.
Mengambil pembolehubah output daripada prosedur tersimpan MySQL dalam PHP PDO melibatkan 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.
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!