Gần đây tôi đã gặp một vấn đề mà tôi cần để có thể lấy ID cuối cùng của truy vấn mà tôi đã chèn vào một trang. Quá trình này khá đơn giản, nhưng tôi muốn một số đảm bảo về quá trình được thực hiện. Dưới đây là cách mã của tôi là:Hiệu quả của Last_insert_id là bao nhiêu?
$query30 = $db->query("INSERT `mybb_quickexample` SET `player1` = '".$row19[username]."', `player2` = '".$row18[username]."', `games` = '".$numberofgames."'")or die( mysqli_error());
Như bạn có thể thấy tôi vừa chèn thứ gì đó vào mybb_quickexample, sau đó tạo ID. Bây giờ trong mã trực tiếp dưới nó, tôi cố gắng tìm ID.
$mmid = $db->insert_id();
foreach($_POST['optiontitle'] as $val){
$val = $db->escape_string($val); //
echo $val;
$query30 = $db->query("INSERT `mybb_quickexample2` SET `gid` = '".$id."', `mid` = '".$mmid."', `optiontitle` = 'OPTION TITLE', `option1` = '$val'")or die( mysqli_error());
}
Như bạn có thể thấy, nó lấy ID gần đây và đặt nó vào bảng mới. Cho phép 2 bảng này tương ứng với nhau sau này khi tôi cần chúng.
Tuy nhiên, không insert_last_id lấy hàng cuối cùng được chèn vào cơ sở dữ liệu hoặc hàng cuối cùng được chèn vào cơ sở dữ liệu trên trang? Bây giờ tôi không hoàn toàn chắc chắn về cơ chế đằng sau điều này, nhưng tôi hỏi điều này bởi vì, nếu một người tải trang này vào đúng thời điểm chính xác như một người khác thì sao? Sẽ có lấy ID chưa từng có hoặc mã vẫn hoạt động?
Bản sao có thể có của http://kera.name/articles/2011/08/one-less-bug-to-worry-about/ –
@LightnessRacesinOrbit Đó không phải là bài đăng trên stackoverflow. _Có thể trùng lặp_? – rpax
@rpax:: whoosh: –