Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mendapatkan ID Auto-Incrementing Selepas Sisipan MySQL dalam PHP Tanpa Syarat Perlumbaan?
Mendapatkan Medan 'id' selepas Memasukkan Baris dalam PHP/MySQL tanpa Syarat Perlumbaan
Apabila memasukkan baris ke dalam jadual MySQL dengan medan 'id' penambahan automatik, selalunya wajar untuk mendapatkan semula nilai 'id' itu untuk digunakan dalam operasi. Walau bagaimanapun, hanya memasukkan baris dan kemudian menanyakan pangkalan data untuk 'id' boleh membawa kepada keadaan perlumbaan jika baris lain dimasukkan dalam masa yang sama.
Kaedah yang boleh dipercayai untuk memastikan integriti pengambilan semula 'id' ialah untuk menggunakan fungsi mysqli_insert_id(). Fungsi ini mengembalikan ID yang dijana oleh pernyataan INSERT terakhir yang dilakukan pada sambungan semasa.
Begini cara untuk melaksanakannya:
$link = mysqli_connect('127.0.0.1', 'my_user', 'my_pass', 'my_db'); mysqli_query($link, "INSERT INTO mytable (1, 2, 3, 'blah')"); $id = mysqli_insert_id($link);
Pendekatan lain, tetapi kurang disyorkan, ialah memasukkan kedua-dua baris ke dalam jadual utama dan baris yang sepadan ke dalam jadual kedua yang merujuk 'id' jadual utama dalam satu transaksi atom menggunakan LAST_INSERT_ID() kaedah.
mysqli_query($link, "INSERT INTO my_user_table ...; INSERT INTO my_other_table (`user_id`) VALUES (LAST_INSERT_ID())");
Perhatikan bahawa setiap sambungan MySQL menjejaki nilai 'id' secara berasingan, menghalang konflik daripada berlaku dengan sisipan serentak.
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan ID Auto-Incrementing Selepas Sisipan MySQL dalam PHP Tanpa Syarat Perlumbaan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!