Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

LastInsertId PDO untuk MySQL kondisi balapan?

MySQL tidak mengembalikan id sisipan terakhir satu sesi ke sesi lain.

http://dev.mysql .com/doc/refman/5.6/en/information-functions.html#function_last-insert-id mengatakan:

Komentar Anda:

Ini telah menjadi perilaku MySQL sejak awal. Mengembalikan ID sisipan terakhir akan sangat tidak berguna jika rentan terhadap kondisi balapan, yaitu jika sisipan di sesi lain dapat mencemari sesi Anda.

Satu kemungkinan adalah Anda menggunakan koneksi persisten, karena versi PHP lama memiliki bug sehingga koneksi dapat diberikan ke permintaan PHP baru dan memberikan akses ke status cakupan sesi dari permintaan PHP sebelumnya. Dengan kata lain, hal-hal seperti kunci dan transaksi dan tabel temp dan variabel pengguna dan id sisipan terakhir dapat bertahan untuk permintaan PHP berikutnya. Masalah ini harus diselesaikan dalam PHP 5.3 dengan driver mysqlnd; koneksi persisten harus "direset" ke keadaan awal.

Penjelasan lain yang mungkin adalah bahwa itu benar-benar berfungsi dengan benar, dan Anda salah dalam pengamatan Anda. Jadi saya sarankan untuk mengujinya dengan hati-hati dan metodis.

perbarui: menurut jawaban Anda , masalah ini tidak ada hubungannya dengan MySQL atau PDO atau lastInsertId. Sepertinya Anda tidak melihat perbedaan dalam output kode PHP Anda sama sekali, Anda melihat angka yang tidak terduga dalam statistik performa jaringan di Chrome Dev Tools.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara menggabungkan dua tabel dalam pernyataan UPDATE?

  2. Bagaimana saya bisa mendapatkan daftar lengkap semua kueri yang sedang berjalan di server MySQL saya?

  3. Menyortir kolom VARCHAR sebagai FLOAT menggunakan operator CAST tidak berfungsi di MySQL

  4. Bagaimana cara memulai aplikasi spring-boot tanpa bergantung pada Database?

  5. Koneksi MySQL melalui terowongan SSH