2012-04-24 91 views
1
$query = "INSERT IGNORE INTO `user` (`name`, `email`) VALUES ('".$name."', '".$email."')"; 
$res = mysql_query($query) or die("Query failed ".mysql_error()); 
$last id = mysql_insert_id(); 

mysql_insert_id()如果有重複條目,則返回0。如何獲取重複條目的ID?

有沒有辦法獲得重複條目的ID?或者我必須做2查詢(SELECT + INSERT)?

回答

1

INSERT無法獲取現有(重複)條目的ID。

不過,你不應該做一個SELECT + INSERT,因爲你需要鎖定表的併發性(以確保SELECT和INSERT之間沒有任何變化)。

在這種情況下,如果插入失敗,並且想要更新現有記錄,請使用INSERT ... ON DUPLICATE KEY UPDATE

如果你只是想失敗,但有現有的ID,然後失敗,並做一個SELECT來獲取現有的條目。