2012-01-02 39 views
17

Trong bảng mysql của tôi, tôi có id-cột được đặt thành tự động.PHP/MySQL Nhận giá trị được tự động tăng lên sau khi chèn

sau đó tôi làm các truy vấn như thế này:

INSERT INTO bảng (id, foo) VALUES ('', 'bar')

thế nào tôi có thể sau đó một cách an toàn tìm ra id được tạo ra với chèn này ?

nếu tôi chỉ truy vấn id cuối cùng này có thể không an toàn, vì một lần chèn khác có thể đã xảy ra trong thời gian chờ đợi, phải không?

+2

sai. ID LAST sẽ là id cuối cùng được chèn bằng kết nối đó. Trừ khi bạn chia sẻ kết nối, đó sẽ là tuyên bố vừa xảy ra. Vì vậy, 'INSERT INTO; SELECT LAST_INSERT_ID' sẽ tốt. – Konerak

+2

có thể trùng lặp của [php/MySQL chèn hàng sau đó nhận được 'id'] (http://stackoverflow.com/questions/897356/php-mysql-insert-row-then-get-id) – hakre

+0

yep xin lỗi nó là một bản sao của câu hỏi khác – clamp

Trả lời

1
mysql_insert_id(); 

Ngoài ra bạn chỉ có thể chạy truy vấn này:

INSERT INTO table (foo) VALUES ('bar') 
2
+1

Trong khi điều này về lý thuyết có thể trả lời câu hỏi, [nó sẽ là thích hợp hơn] (http://meta.stackexchange.com/q/8259) để bao gồm các phần thiết yếu của câu trả lời ở đây, và cung cấp liên kết để tham khảo. –

2

Nếu bạn sử dụng mysql_query (". .. "), sau đó mysql_insert_id() là chức năng bạn cần. Nếu bạn sử dụng một cái gì đó khác để thực hiện truy vấn thì tài liệu tương ứng sẽ được kiểm tra

2

Nếu bạn đang sử dụng PHP để lấy giá trị auto_incremented được trả lại sau câu lệnh INSERT, hãy thử sử dụng MySQLi insert_id function. Phiên bản mysql_insert_id() cũ hơn không được chấp nhận trong PHP.

Một ví dụ dưới đây:

<?php 
$mysqli = new mysqli("localhost", "my_user", "my_password", "world"); 

/* check connection */ 
if (mysqli_connect_errno()) { 
    printf("Connect failed: %s\n", mysqli_connect_error()); 
    exit(); 
} 

$mysqli->query("CREATE TABLE myCity LIKE City"); 

$query = "INSERT INTO myCity VALUES (NULL, 'Stuttgart', 'DEU', 'Stuttgart', 617000)"; 
$mysqli->query($query); 

printf ("New Record has id %d.\n", $mysqli->insert_id); 

/* drop table */ 
$mysqli->query("DROP TABLE myCity"); 

/* close connection */ 
$mysqli->close(); 
?> 
0

cũng trong PDO sau khi thực hiện lệnh như ví dụ dưới đây:

$lastId = $dbh->lastInsertId(); 

nhấp chuột cho REF

Các vấn đề liên quan