Dapatkan LAST_INSERT_ID() daripada MySQL Stored Procedure menggunakan PHP PDO
Mendapatkan semula nilai LAST_INSERT_ID() daripada prosedur disimpan MySQL dalam PHP PDO boleh menjadi tugas yang mengelirukan. Walaupun dokumentasi yang luas, ia tetap menjadi sumber cabaran biasa bagi pembangun. Mari kita mendalami penyelesaian kepada isu ini.
Isu utama terletak pada fakta bahawa MySQL menggunakan pembolehubah untuk parameter IN, INOUT dan OUT dalam prosedur tersimpan. Untuk mendapatkan LAST_INSERT_ID(), proses dua langkah diperlukan:
Langkah 1: Laksanakan Prosedur Tersimpan dengan Pembolehubah
$stmt = $db->prepare("CALL simpleProcedure(:name, :returnid)"); $stmt->bindValue(':name', $name, PDO::PARAM_STR); $stmt->bindValue(':returnid', $returnid, PDO::PARAM_INT, 11); $stmt->execute();
Langkah ini melaksanakan yang disimpan prosedur, menghantar nilai input serta mengisytiharkan pembolehubah untuk menerima nilai LAST_INSERT_ID(). Walau bagaimanapun, kami tidak boleh mengakses nilai secara langsung daripada pembolehubah PHP.
Langkah 2: Dapatkan Nilai Pembolehubah
Untuk mendapatkan LAST_INSERT_ID(), kita perlu melaksanakan pertanyaan berasingan untuk mendapatkan semula nilai yang diberikan kepada pembolehubah SQL. Ini melibatkan menetapkan pembolehubah Pengguna SQL dan melaksanakan pertanyaan untuk memilih nilainya.
$sql = "SELECT @returnid AS last_insert_id"; $result = $db->query($sql)->fetch(); $last_insert_id = $result['last_insert_id'];
Dengan mengikuti langkah ini, anda boleh berjaya mendapatkan nilai LAST_INSERT_ID() daripada prosedur disimpan MySQL menggunakan PHP PDO. Adalah penting untuk ambil perhatian bahawa mengikat pembolehubah PHP kepada parameter INOUT atau OUT boleh membawa kepada ralat. Sebaliknya, gunakan pembolehubah Pengguna SQL untuk mengendalikan parameter pembolehubah.
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan LAST_INSERT_ID() daripada MySQL Stored Procedure Menggunakan PHP PDO?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!