它將返回在當前會話中插入的最後一行的ID,因此您無需擔心。事實上,您將鏈接標識符作爲參數傳遞,否則它將默認打開最後一個鏈接。來自文檔
MySQL連接。如果未指定鏈接標識符,則假定由mysql_connect()打開的最後一個鏈接 。如果找不到這樣的鏈接,則會嘗試創建一個,就好像調用mysql_connect()時不帶參數一樣使用 。如果未找到或建立連接,則會生成E_WARNING 級別的錯誤。
所以,如果你有
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$link) {
die('Could not connect: ' . mysql_error());
}
mysql_select_db('mydb');
mysql_query("INSERT INTO mytable (product) values ('kossu')");
printf("Last inserted record has id %d\n", mysql_insert_id());
這將始終是正確的(如果有mytable的AUTO_INCREMENT列,當然),因爲它檢索的最後一個會話生成的ID。如果在同一時間另一個用戶運行完全相同的查詢,他將有不同的會話,他會正確地得到他的ID
+1。 MySQL是一個多用戶數據庫;他們提前預見到了這樣的問題。 :) – 2012-04-11 15:45:50