1. ホーム
  2. php

[解決済み] PDO Error - PDOException' with message 'SQLSTATE[HY000]: 一般的なエラー' [重複]

2022-02-11 06:28:10

質問

このエラーが発生します。

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000]: General error' in ...

...このコードをPDOで実行すると必ず。

//Select data from the topic.
$s = $dbh->prepare("SELECT * FROM forum_topics WHERE forum_id=:forum_cat_id AND topic_id=:topicid");
$s->bindParam(':forum_cat_id', $forum_cat_id);
$s->bindParam(':topicid', $topicid);
$s->execute();
$f = $s->fetch();

$s = $dbh->prepare("UPDATE forum_cats 
    SET 
        forum_last_postid = :last_post_id, forum_last_posttime = :time, 
        forum_last_userid = :userid, forum_last_username = :username, 
        forum_posts=forum_posts+1 
    WHERE forum_id = :forum_cat_id");
$s->bindParam(':last_post_id', $last_post_id);
$s->bindParam(':time', $time);
$s->bindParam(':userid', $userid);
$s->bindParam(':username', $userdata['username']);
$s->bindParam(':forum_cat_id', $forum_cat_id);
try {
    $s->execute();
}
catch(PDOException $e) {
    die($e->getMessage());
}

if (count($s->fetchAll()) == 0) {
    return 3;
}

なぜこのようなことが起こるのか、まったくわかりません。クエリをチェックしましたが、エラーは見つかりませんでした。

どうすればいいですか?

このようなことが起こります。

  • UPDATEクエリをフェッチしようとしています。UPDATE クエリは値を返さないので、それはできません。クエリによって影響を受けた行の数を知りたい場合は、代わりに rowCount() 関数を使用します。すべての DB ドライバが、影響を受けた行を提供するわけではないことに注意してください。

  • 宣言されていない変数を使用しています(少なくともここに投稿されたコードでは)。これはこの特定のエラーの原因ではありませんが、他のエラーを発生させる可能性があります。

  • データベースから選択したデータが使用されていません

    また、PDO の操作はすべて try ブロック内で行うことを推奨します。そうしないと、処理されない例外が発生する可能性があります。