Hãy để chúng tôi bắt đầu bằng cách chuẩn bị dữ liệu mẫu. Chúng ta sẽ tạo một bảng, employee_designation, sau đó là chèn các hàng vào đó
#create the table employee_designation CREATE TABLE employee_designation [ id int NOT NULL AUTO_INCREMENT, emp_id int DEFAULT NULL, emp_name varchar[255] DEFAULT NULL, emp_designation varchar[255] DEFAULT NULL, PRIMARY KEY [id] ]; # insert rows to employee_designation INSERT INTO employee_designation [emp_id,emp_name,emp_designation] VALUES[10,"Henry","Sales Manager"]; INSERT INTO employee_designation [emp_id,emp_name,emp_designation] VALUES[20,"Richa","Sales Assistant"]; INSERT INTO employee_designation [emp_id,emp_name,emp_designation] VALUES [30,"Ved","Sales Assistant"]; INSERT INTO employee_designation [emp_id,emp_name,emp_designation] VALUES[40,"George","Senior Sales Manager"]; INSERT INTO employee_designation [emp_id,emp_name,emp_designation] VALUES[50,"Alexendra","Sales Assistant"]; INSERT INTO employee_designation [emp_id,emp_name,emp_designation] VALUES[60,"Gustav","Sales Manager"]; INSERT INTO employee_designation [emp_id,emp_name,emp_designation] VALUES[70,"Veronica","Sales Manager"];
Lưu ý rằng cột id bị thiếu trong các câu lệnh chèn vì id là khóa auto_increment và sẽ tự gán các giá trị không âm
Đầu ra hành động. -
quảng cáo
Tạo bảng và chèn thành công, để xem ảnh chụp nhanh của bảng thực thi
SELECT * FROM TABLE employee_designation;
đầu ra. -
Cách lấy id được chèn lần cuối của bảng MySQL bằng hàm max[]
Chúng tôi sẽ sử dụng hàm max[] để lấy id được chèn lần cuối. Hàm Max[] trả về giá trị lớn nhất hiện tại cho một cột cụ thể. Quan sát truy vấn dưới đây cho giải pháp
SELECT MAX[ id ] FROM employee_designation;
đầu ra. -
Đầu ra trong image_3 cho thấy id được chèn lần cuối là 7 trong bảng employee_designation
Cách lấy id được chèn lần cuối của bảng MySQL bằng ORDER BY DESC
Chúng tôi sẽ thực hiện ĐẶT HÀNG BẰNG DESC trên các giá trị id được trả về từ một truy vấn đã chọn để lấy id được chèn cuối cùng. Trước tiên, truy vấn sẽ chọn tất cả các giá trị từ cột id, sau đó sắp xếp chúng theo thứ tự giảm dần. Cuối cùng, chỉ một bản ghi được trả về khi áp dụng mệnh đề GIỚI HẠN. Quan sát truy vấn dưới đây cho giải pháp
SELECT id FROM employee_designation ORDER BY id DESC LIMIT 1;
đầu ra. -
Đầu ra trong image_4 cho thấy id được chèn lần cuối là 7 trong bảng employee_designation
Cách lấy id được chèn lần cuối của bảng MySQL bằng LAST_INSERT_ID[]
Chúng tôi sẽ sử dụng hàm LAST_INSERT_ID[] để lấy id được chèn lần cuối. Last_insert_id[] Hàm MySQL trả về giá trị BIG UNSIGNED cho câu lệnh chèn trên cột auto_increment
Lưu ý quan trọng
Nếu chỉ có một câu lệnh chèn duy nhất cho nhiều hàng, thì last_insert_id[] sẽ chỉ trả về giá trị được tạo cho hàng được chèn đầu tiên
Quan sát truy vấn dưới đây cho giải pháp
SELECT LAST_INSERT_ID[];
đầu ra. -
Cách lấy id được chèn lần cuối của bảng MySQL bằng AUTO_INCREMENT
Chúng tôi sẽ sử dụng LƯỢC ĐỒ THÔNG TIN để lấy id được chèn cuối cùng của cột được tăng tự động của bảng MySQL
The example is lack of insert_id in multi_query. Here is my example:
Assuming you have a new test_db in mysql like this:
create database if not exists test_db;
use test_db;
create table user_info [_id serial, name varchar[100] not null];
create table house_info [_id serial, address varchar[100] not null];
Then you run a php file like this:
________số 8_______
$db = new mysqli[SERVER, MYSQL_USER, MYSQL_PASSWORD, "test_db", 3306];
if [$db->connect_errno]
echo "create db failed, error is ", $db->connect_error;
else {
$sql = "insert into user_info "
. "[name] values "
. "['owen'], ['john'], ['lily']";
if [!$result = $db->query[$sql]]
echo "insert failed, error: ", $db->error;
else
echo "last insert id in query is ", $db->insert_id, "\n";
$sql = "insert into user_info"
. "[name] values "
. "['jim'];";
$sql .= "insert into house_info "
. "[address] values "
. "['shenyang']";
if [!$db->multi_query[$sql]]
echo "insert failed in multi_query, error: ", $db->error;
else {
echo "last insert id in first multi_query is ", $db->insert_id, "\n";
if [$db->more_results[] && $db->next_result[]]
echo "last insert id in second multi_query is ", $db->insert_id, "\n";
else
echo "insert failed in multi_query, second query error is ", $db->error;
}
$db->close[];
}
?>
You will get output like this:
last insert id in query is 1
last insert id in first multi_query is 4
last insert id in second multi_query is 1
Conclusion:
1 insert_id works in multi_query
2 insert_id is the first id mysql has used if you have insert multi values