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?还是我必须做 2 个查询(SELECT + INSERT)?

4

1 回答 1

1

使用 INSERT 无法获取现有(重复)条目的 ID。

不过,您不应该执行 SELECT + INSERT,因为您需要锁定表以实现并发(以确保 SELECT 和 INSERT 之间没有任何变化)。

在这种情况下,如果插入失败,而您想要更新现有记录,请使用INSERT ... ON DUPLICATE KEY UPDATE

如果您只想失败,但拥有现有 ID,则失败,并执行 SELECT 以获取现有条目。

于 2012-04-24T14:39:02.913 回答