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() return 0 if there is a duplicated entry.

Is there a way to get the ID of the duplicated entry ? or do I have to do 2 query ( SELECT + INSERT ) ?

4

1 に答える 1

1

既存の (重複した) エントリの ID を INSERT で取得する方法はありません。

ただし、同時実行のためにテーブルをロックする必要があるため (SELECT と INSERT の間で何も変更されていないことを確認するため)、SELECT + INSERT を実行しないでください。

この場合、挿入が失敗し、代わりに既存のレコードを更新する場合は、INSERT ... ON DUPLICATE KEY UPDATEを使用します。

単に失敗したいが、既存の ID を持っている場合は、失敗し、SELECT を実行して既存のエントリを取得します。

于 2012-04-24T14:39:02.913 に答える