ホームページ > バックエンド開発 > PHPチュートリアル > MySQLi での「非オブジェクトのメンバー関数 fetch_assoc() の呼び出し」エラーを修正する方法

MySQLi での「非オブジェクトのメンバー関数 fetch_assoc() の呼び出し」エラーを修正する方法

Linda Hamilton
リリース: 2024-12-07 20:22:16
オリジナル
445 人が閲覧しました

How to Fix the

「非オブジェクトのメンバー関数 fetch_assoc() の呼び出し」エラーのトラブルシューティング

mysqli 拡張機能を使用してデータベース クエリを実行すると、エラー「致命的エラー: 非オブジェクトに対するメンバー関数 fetch_assoc() の呼び出し。」このエラーは、クエリが失敗し、結果の mysqli 結果セットが null の場合に発生します。

問題分析

指定されたコード スニペットでは、$result 変数のエラーがチェックされていないためにエラーが発生します。クエリが実行されます。したがって、クエリが失敗した場合、$result が null になり、その後の fetch_assoc() の呼び出しが失敗する可能性があります。

解決策

この問題を解決するには、 mysqli_query() 呼び出しのエラーの結果。クエリが失敗した場合は、エラーを示すために例外がスローされる必要があります。以下の修正されたコード:

function get_recent_highs($view_deleted_images = false)
{
    $lower = $this->database->conn->real_escape_string($this->page_size * ($this->page_number - 1));
    $query = "SELECT image_id, date_uploaded FROM `images` ORDER BY ((SELECT SUM( image_id=`images`.image_id ) FROM `image_votes` AS score) / (SELECT DATEDIFF( NOW( ) , date_uploaded ) AS diff)) DESC LIMIT " . $this->page_size . " OFFSET $lower";
    $result = $this->database->query($query);

    if (!$result) {
        throw new Exception("Database Error [{$this->database->errno}] {$this->database->error}");
    }

    $page = array();
    while($row = $result->fetch_assoc())
    {
        try
        {
            array_push($page, new Image($row['image_id'], $view_deleted_images));
        }
        catch(ImageNotFoundException $e)
        {
            throw $e;
        }
    }

    return $page;
}
ログイン後にコピー

if (!$result) チェックを追加することにより、コードはデータベース エラーが適切に処理され、適切な例外がスローされることを保証します。

以上がMySQLi での「非オブジェクトのメンバー関数 fetch_assoc() の呼び出し」エラーを修正する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート