影響を受けた行数を取得するためにpdoのexec更新データを使用します
しかし、問題が発生しました。更新されたデータが元のデータと同じである場合、0が返されます
このように、更新が原因であるかどうかを判断することはできません。同じデータであるか、データを更新していないかを確認するためにもう一度クエリステートメントを使用する必要があります
もっと簡単な解決策はありますか?
更新に失敗するとエラーが発生します
そのため、常に PDO::errorCode の戻り値を確認する必要があります
PDO::exec は 0 を返します。これは操作が成功したことを意味しますが、実際のアクションはありません
したがって、PDO::errorCode の戻り値を常に確認する必要があります
PDO::exec 0 を返します。これは操作が成功したことを意味しますが、実際のアクションはありません
exec は 3 つの状態を返し、データを更新すると影響を受ける行の数を返し、更新されたデータがない場合は 0 を返し、エラーは false を返します (テーブルデータベースに存在しないものは更新する必要があります)
最初の 2 つの状態の errorCode はどちらも 00000 を返しますが、これはまったく判断できません
私の質問をもっと簡単に言ってみましょう
`user` データベース
ID パスワード
1 人の男の子
update `user` set `password`='boy' where `id`='1';
exec returns 0、errorCode returns 00000
設定が失敗したことを直接ユーザーに伝えるのは絶対に良くありません
` を選択する必要がありますpasswd` from `user` where `id`='1';
パスワード=='boy' の設定が成功した場合、それ以外の場合は設定が失敗します
テーブルに更新時刻フィールドを追加し、更新されるたびに現在時刻に設定するという方法を考えました
こうすることで、更新テーブルにレコードがない場合のリターンとリターンを区別することができます同じデータが変更された場合、両方とも 0 になり、クエリと検証が必要になります
これは、現時点で最も簡単だと思われる回避策です