回答後の編集:これは自分のコードのバグだと思います-それが何であるかはわかりませんが、修正に進みました。以下の回答を参照してください。
MySQL/PHP を使用して、一連の INSERT ... ON DUPLICATE KEY UPDATE ステートメントを実行しています。私が読んだドキュメントは、これの行数が返されることを示しています:
-1 : an error
0 : update, no changes to row made (i.e. all values duplicated)
1 : row inserted
2 : update performed on row with duplicate key
ただし、2 が表示されるはずの 0 の結果しか表示されません (コードがさまざまなデータベース値を更新するのを見ているためです)。コードは次のとおりです。
$stmt = $db->prepare('INSERT INTO sometable (`id`, `name`, `email`) VALUES (?, ?, ?) ON DUPLICATE KEY UPDATE `name` = ?, `email` = ? ;');
$stmt->execute( array ( $id, $name, $email, $name, $email ) );
$rc = $stmt->rowCount();
echo $rc;
$rc は、更新の場合は常に 0 (値が確実に変更された場合でも) または 1 (挿入が成功した場合は予想どおり) になります。
私は何が欠けていますか?:)