ホームページ >バックエンド開発 >PHPチュートリアル >PDO が更新クエリ後に成功ではなく「SQLSTATE[HY000]」を返すのはなぜですか?
PDO を使用してデータベースを更新しようとすると、エラー "SQLSTATE[HY000]: 一般エラー" が発生する可能性があります。返される。報告されたエラーにもかかわらず、データベースは正常に更新されているため、このエラーは不可解に見えるかもしれません。
エラーの原因
このエラーの根本原因は、更新または挿入クエリ後の fetchAll() メソッド。 PDO の fetchAll() メソッドは通常、選択クエリの影響を受けるすべての行を取得するために使用されます。ただし、更新または挿入操作を実行する場合、このメソッドは必要ありません。
間違ったコードの例
次のコードは、データベース テーブルを更新し、すべてのテーブルを取得しようとします。 fetchAll() を使用して行を更新しました:
try { $stmt = $pdo->prepare("UPDATE $page SET $section = :new_content WHERE $section = '$old_content'"); $stmt->execute(array('new_content' => $new_content)); $result = $stmt->fetchAll(); echo "Database updated!"; } catch(PDOException $e) { echo 'ERROR UPDATING CONTENT: ' . $e->getMessage(); }
この場合、更新クエリの後に fetchAll() を使用したため、エラー「SQLSTATE[HY000]: 一般エラー」がスローされます。
正しい解決策
このエラーを修正するには、コードから fetchAll() ステートメントを削除するだけです。修正されたコードは次のようになります。
try { $stmt = $pdo->prepare("UPDATE $page SET $section = :new_content WHERE $section = '$old_content'"); $stmt->execute(array('new_content' => $new_content)); echo "Database updated!"; } catch(PDOException $e) { echo 'ERROR UPDATING CONTENT: ' . $e->getMessage(); }
fetchAll() ステートメントを省略すると、エラー メッセージ「SQLSTATE[HY000]: General error」が表示されなくなり、データベースの更新が成功します。
以上がPDO が更新クエリ後に成功ではなく「SQLSTATE[HY000]」を返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。