execute()
の場合 trueを返します それはステートメントが「成功した」ことを意味しますが、それが何かを変えたことを意味するものではありません。エラーがなかったことを意味します。
-
WHERE句の条件が原因で、ゼロ行に一致した可能性があります。それはまだ「成功」と見なされます。
SELECT
を試すことができます 同じWHERE句を使用して結果をフェッチし、行と一致することを確認します。 -
1つ以上の行と一致している可能性がありますが、設定している値はすでにそれらの行の値です。
$sth->rowCount()
を呼び出すことができます 実行後、UPDATEが影響を受けた行数を確認します。 (これは、一致した行数より少ない場合があります)。 -
このテーブルのコピーが複数ある場合は、読み取っているデータベースに変更が加えられていることを再確認する必要があります。時々起こります-アプリケーション構成ファイルを変更するのを忘れて、間違ったデータベースを更新していることに気づきません。
これが問題であることが判明しました-3番目のポイントのバリエーション:
- 複数のサーバーで作業している場合は、正しいmysqlサーバーで変更を確認していることも再確認してください。