PDO が更新クエリ後に成功ではなく「SQLSTATE[HY000]」を返すのはなぜですか?

Linda Hamilton
リリース: 2024-10-22 23:05:29
オリジナル
897 人が閲覧しました

Why Does PDO Return

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 サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!