Plugin WordPress saya memiliki tabel dengan bidang kunci utama AUTO_INCREMENT yang disebut ID. Saat baris baru dimasukkan ke dalam tabel, saya ingin mendapatkan nilai ID dari penyisipan.
Fiturnya adalah menggunakan AJAX untuk mengirim data ke server untuk dimasukkan ke dalam DB. ID baris baru dikembalikan dalam tanggapan AJAX untuk memperbarui status klien. Ada kemungkinan bahwa beberapa klien memposting data ke server pada saat yang bersamaan. Jadi, saya harus memastikan bahwa setiap permintaan AJAX mendapatkan ID baris baru yang SAMA sebagai tanggapan.
Di PHP, ada metode yang disebut mysql_insert_id untuk fitur ini, tetapi berlaku untuk kondisi balapan hanya jika argumennya adalah link_identifier dari operasi terakhir. Operasi saya dengan database ada di $ wpdb. Bagaimana cara mengekstrak link_identifier dari $ wpdb untuk memastikan mysql_insert_id berfungsi? Apakah ada cara lain untuk mendapatkan id baris yang disisipkan terakhir dari $ wpdb?
Terima kasih.
sumber
$wpdb->dbh
, tetapi didefinisikan sebagaiprotected $dbh;
... sou Anda tidak dapat mengaksesnya secara langsung, oleh karena itu, gunakan jawaban di bawah ini :)Jawaban:
Langsung setelah
$wpdb->insert()
memasukkan, lakukan ini:Informasi lebih lanjut tentang bagaimana melakukan berbagai hal dengan cara WordPress dapat ditemukan di kodeks WordPress. Detail di atas ditemukan di sini di halaman kelas wpdb
sumber
$lastid = $wpdb->$insert_id
:?Beginilah cara saya melakukannya, dalam kode saya
Lebih Banyak Variabel Kelas
sumber
$wpdb->query
pengembalian yang len baris yang terkena dampak dan$wpdb->insert_id
memiliki dimasukkan id lalu. Terima kasih!INSERT IGNORE
melakukannya$wpdb->insert
.insert_id
ke saya, bukan jumlah baris yang terpengaruh.Sesuatu seperti ini harus melakukannya juga:
sumber
Saya perlu mendapatkan cara id terakhir setelah memasukkannya, jadi
Bukan pilihan.
Apakah sebagai berikut:
sumber
Menempatkan panggilan ke
mysql_insert_id()
dalam transaksi, harus melakukannya:sumber