Chỉ phải đối mặt sau tình huống
Có tập tin post.php
trong đó bao gồm một tập tin (như insert.php
).
Tổng số các mã để chèn vào mysql tọa lạc tại insert.php
Trong insert.php
là mã $id_of_inserted_row = $db->lastInsertId();
Sau đó, trong insert.php
là echo $id_of_inserted_row;
trong đó cho thấy giá trị đúng.
Nhưng echo $id_of_inserted_row;
trong post.php
hiển thị giá trị không chính xác (như tôi thấy hiển thị 7 số nhỏ hơn giá trị thực). Tôi không hiểu tại sao, chỉ cần tính đến.
Cập nhật
Xin lỗi, trên văn bản là vì lắp vào hai bảng và sử dụng lẫn lộn cùng $id_of_inserted_row = $db->lastInsertId();
cho cả hai bảng.
Vì vậy, tôi có cùng một kết luận như trong các câu trả lời khác: lastInsertId()
là id của hàng được chèn cuối cùng.
Tình huống phải đối mặt. Tôi đã chèn 2 hàng vào mysql. Trong trường hợp này tôi thấy rằng lastInsertId() là id của hàng được chèn đầu tiên (không phải là cuối cùng). Không hiểu tại sao ... Tìm thấy câu trả lời https://stackoverflow.com/a/12574752/2118559
Quan trọng Nếu bạn chèn nhiều hàng sử dụng một câu lệnh INSERT duy nhất, LAST_INSERT_ID() trả về giá trị được tạo ra chỉ hàng chèn đầu tiên. Lý do cho điều này là làm cho nó có thể tái tạo dễ dàng cùng một câu lệnh INSERT đối với một số máy chủ khác.
Không, sẽ không có xung đột. Id chèn phụ thuộc vào kết nối và mỗi lần tải trang sẽ thiết lập kết nối mới. –
Phụ thuộc vào cơ sở dữ liệu cơ bản. Nếu đó là mysql, PDO sẽ đơn giản gọi hàm mysql last_insert_id() API, đảm bảo rằng ID trả về là ID được tạo bởi truy vấn chèn cuối cùng được thực hiện bởi kết nối PDO của bạn. –
có thể trùng lặp của [LAST_INSERT_ID() cách hoạt động tại môi trường nhiều người dùng] (http://stackoverflow.com/questions/5835677/last-insert-id-how-it-works-at-multi-users-environment) –