1

UPDATE table SET foo = 'bar' WHERE id = 1

これを 1 回実行すると がPDOStatement::rowCount()返さ1れますが、もう一度 (複数回) 実行すると、次の実行で が返されます0

これが本当に期待される動作であるかどうか疑問に思っていましたか?1基本的に同じ行を更新/影響しているので、常に戻ると思われませんか?

4

1 に答える 1

3

rowCount()ステートメントによって実際に変更された行数を報告します。UPDATE同じステートメントを 2 回呼び出した場合UPDATE、2 回目に変更が必要な行はありません (最初に変更されたため)。したがって、影響を受ける行の数は実際には 0 です。

コンソールで同じことを実行すると、次のように表示されます。これは、行が条件を満たしているにもかかわらず、その列の値が既に変更しようとした値であるため、変更されていないことを示しています。

Rows matched: 1 Changed: 0 Warnings: 0
于 2012-08-12T13:21:00.197 に答える