ホームページ >バックエンド開発 >PHPチュートリアル >MySQL がデータを更新する前にデータが変更されたかどうかを判断するかどうか

MySQL がデータを更新する前にデータが変更されたかどうかを判断するかどうか

WBOY
WBOYオリジナル
2016-06-23 13:35:311866ブラウズ

MySql{MyPhpAdmin} で更新ステートメントを実行します:
update tableA set a=1 where id=2
a の元の値が 1 の場合、MySql は直接「影響を受ける行 0 行」を返します。
a の元の値が 1 でない場合、「1 行が影響を受けました」を返します。
MySql は、更新ステートメントを実行する前に新しい値を古い値と比較しますか? 変更がない場合は、それを変更します。変更、つまり更新ステートメントを実行しませんか?

PHP でも
mysql->query(); ステートメントが実行されると、ステートメント自体にエラーがなければ、直接 true が返されます。 update を実行すると、構文が正しく、条件が間違っている場合、クエリは直接 true を返します。
mysql->affected_rows を使用して判断すると、上記の mysql で述べた問題が発生します。ステートメントは正しく、条件も正しいのに、データは変更されず、0 行が返されます。このように、更新ステートメントが実際に正常に実行され、特定のデータに影響を与えていることをどのように確認すればよいでしょうか。


ディスカッションへの返信(解決策)

見てるだけで混乱してしまいます。 。
ステートメントが正しいかどうか、このデータが存在するかどうか、更新後に変更されたかどうかを知る必要があります。
すべてのニーズを満たすためには、最初に選択する必要があると思います。

見ているだけで混乱してしまいます。 。
ステートメントが正しいかどうか、このデータが存在するかどうか、更新後に変更されたかどうかを知る必要があります。
すべてのニーズを満たすためには、最初に選択する必要があると思います。



データが存在する必要があり、ステートメントが正しくなければなりません。MySql の戻り値に問題があることをコメントしてください





-- 人生を大切にし、MySql から離れてください

このように、どうやって知ることができますか?私の update ステートメントが実際に正常に実行されたことを確認します。
-- true を返すと成功を意味します

は特定のデータに影響します。
mysql->affected_rows

他のコンテンツが変更されない場合に影響を受ける行数が 0 にならないように、変更時間を記録するフィールドを追加することは可能ですか

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。