ホームページ >バックエンド開発 >PHPチュートリアル >PHP データベース クエリで「致命的エラー: fetch_assoc() on a Non-Object」が発生するのはなぜですか?

PHP データベース クエリで「致命的エラー: fetch_assoc() on a Non-Object」が発生するのはなぜですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-09 00:23:14691ブラウズ

Why Am I Getting a

致命的エラー: 非オブジェクトの fetch_assoc()

データベース クエリを実行すると、次のエラー メッセージが表示される場合があります:

Fatal error: Call to a member function fetch_assoc() on a non-object

このエラーは、 fetch_assoc() メソッドが呼び出されたときに発生します。非オブジェクト (通常は mysqli_result オブジェクト)。

問題分析:

提供されたコード スニペットでは、次のような関数を作成した可能性があります:

function get_recent_highs(...){
    $result = $this->database->query($query);
    while($row = $result->fetch_assoc()) {...}
}

$result が非オブジェクトの場合、fetch_assoc() 呼び出しは失敗します。これは、SQL クエリにエラーがあり、query() が結果オブジェクトの代わりに false を返す場合に発生する可能性があります。

解決策:

エラーが発生した場合は、query() の戻り値を確認してください。 false を返した場合は、例外をスローするか、それに応じてエラーを処理します。例:

function get_recent_highs(...){
    $result = $this->database->query($query);
    if (!$result) {
        throw new Exception("Database Error");
    }
    while($row = $result->fetch_assoc()) {...}
}

query() でエラーをキャッチすることで、有効な結果オブジェクトに対してのみ fetch_assoc() が呼び出され、非オブジェクト エラーを防ぐことができます。

以上がPHP データベース クエリで「致命的エラー: fetch_assoc() on a Non-Object」が発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。