Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mendapatkan LAST_INSERT_ID() daripada MySQL Stored Procedure Menggunakan PHP PDO?

Bagaimana untuk Mendapatkan LAST_INSERT_ID() daripada MySQL Stored Procedure Menggunakan PHP PDO?

Susan Sarandon
Susan Sarandonasal
2024-11-07 12:00:05780semak imbas

How to Retrieve LAST_INSERT_ID() from MySQL Stored Procedure Using PHP PDO?

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!

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