Rumah >pangkalan data >tutorial mysql >Mengapa LAST_INSERT_ID() MySQL Mengembalikan 0, dan Bagaimana Saya Boleh Membetulkannya?

Mengapa LAST_INSERT_ID() MySQL Mengembalikan 0, dan Bagaimana Saya Boleh Membetulkannya?

DDD
DDDasal
2024-12-22 11:25:10876semak imbas

Why Does MySQL's LAST_INSERT_ID() Return 0, and How Can I Fix It?

MySQL: Penyelesaian Masalah LAST_INSERT_ID() Mengembalikan 0

Dalam MySQL, fungsi LAST_INSERT_ID() mengembalikan ID yang dijana untuk baris terakhir yang dimasukkan ke dalam lajur AUTO_INCREMENT. Walau bagaimanapun, anda menghadapi masalah di mana ia secara konsisten mengembalikan 0 walaupun telah memasukkan rekod baharu ke dalam jadual.

Setelah disiasat, nampaknya masalah itu berpunca daripada konfigurasi MySQL anda. Anda menyebut bahawa fungsi PHP mysql_insert_id dan PDO::lastInsertId() juga tidak memberikan hasil. Ini menunjukkan bahawa isu ini tidak khusus untuk fungsi LAST_INSERT_ID() tetapi terletak pada sambungan MySQL itu sendiri.

Penyelesaian kepada masalah ini ialah untuk menetapkan parameter PersistentConnections kepada TRUE dalam fail konfigurasi MySQL anda. Ini memastikan bahawa skrip PHP anda mengekalkan sambungan yang sama ke pangkalan data untuk tempoh operasinya. Apabila PersistentConnections ditetapkan kepada FALSE, sambungan baharu dibuat untuk setiap pertanyaan, yang menyebabkan CONNECTION_ID berubah. Akibatnya, LAST_INSERT_ID() menjadi tidak berkesan kerana ia tidak dapat mengesan sambungan dengan operasi sisipan terakhir.

Menetapkan PersistentConnections kepada TRUE menyelesaikan isu ini, membenarkan skrip anda menggunakan semula sambungan yang sama dan dengan itu mengembalikan ID AUTO_INCREMENT dengan betul daripada rekod yang dimasukkan terakhir. Selain itu, anda boleh merujuk kepada dokumentasi pada Setiap pertanyaan mencipta CONNECTION_ID() baharu untuk mendapatkan maklumat lanjut. Terima kasih kepada dnagirl atas bantuan mereka dalam menyelesaikan masalah ini.

Atas ialah kandungan terperinci Mengapa LAST_INSERT_ID() MySQL Mengembalikan 0, dan Bagaimana Saya Boleh Membetulkannya?. 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