PDO 実行アップデート

WBOY
リリース: 2016-06-23 14:25:59
オリジナル
1178 人が閲覧しました

影響を受けた行数を取得するために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 になり、クエリと検証が必要になります
これは、現時点で最も簡単だと思われる回避策です

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート