PDOで更新クエリを実行しています。次の理由から、更新クエリがデータベース内で何も変更されていないかどうかを確認したいと思います。
- 渡された値は、データベースに既に存在するものと同じです。
rowCount()
そのような場合は が返されることを私は知っています0
。 - 更新しようとしている行がデータベースに存在しません。私が見る限り、
rowCount()
そのような場合も を返します0
。
更新しようとしているレコードが実際に存在するかどうかを確認するために、SELECT ステートメントを UPDATE の前に置く必要がありますか? または、この種の別の一般的な慣行があります。
私はドキュメントを熟読してきましたが、決定的な答えを見つけることができません: http://php.net/manual/en/pdostatement.rowcount.php
この StackOverflow の回答に出くわしました。これは、rowCount() が一部のシナリオで NULL を返す可能性があることを示唆していますが、私のシナリオには当てはまらないと思います。既存のデータ?
この質問のコメントから:
データが変更されていない場合、rowCount はゼロになります。データが変更された場合、rowCount は 1 以上になります。エラーが発生した場合、rowCount は null または false またはゼロ以外の値になります。
更新 以下のコメントで命題の例を示す別の質問を見つけました: PDO を使用して挿入および更新 ID を取得する
UPDATE2
別の質問は、PDO::MYSQL_ATTR_FOUND_ROWS
PDOを介して別の解決策を提案しています-行が更新されたかどうかを確認しますか?