sql >> データベース >  >> RDS >> Mysql

PDOStatement ::execute()はtrueを返しますが、データは更新されません

    execute()の場合 trueを返します それはステートメントが「成功した」ことを意味しますが、それが何かを変えたことを意味するものではありません。エラーがなかったことを意味します。

    • WHERE句の条件が原因で、ゼロ行に一致した可能性があります。それはまだ「成功」と見なされます。 SELECTを試すことができます 同じWHERE句を使用して結果をフェッチし、行と一致することを確認します。

    • 1つ以上の行と一致している可能性がありますが、設定している値はすでにそれらの行の値です。 $sth->rowCount()を呼び出すことができます 実行後、UPDATEが影響を受けた行数を確認します。 (これは、一致した行数より少ない場合があります)。

    • このテーブルのコピーが複数ある場合は、読み取っているデータベースに変更が加えられていることを再確認する必要があります。時々起こります-アプリケーション構成ファイルを変更するのを忘れて、間違ったデータベースを更新していることに気づきません。

    これが問題であることが判明しました-3番目のポイントのバリエーション:

    • 複数のサーバーで作業している場合は、正しいmysqlサーバーで変更を確認していることも再確認してください。


    1. MySQLで主キーのインデックスが自動的に作成されますか?

    2. エラー1044(42000):データベース'db'へのユーザー''@'localhost'のアクセスが拒否されました

    3. クエリを使用してSQLServerでテーブルを作成する方法

    4. mysqlデータベースに接続し、Androidコードを使用してデータを挿入するにはどうすればよいですか?