Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Membetulkan Ralat 'Panggil ke fungsi ahli fetch_assoc() pada bukan objek' dalam MySQLi?

Bagaimana untuk Membetulkan Ralat 'Panggil ke fungsi ahli fetch_assoc() pada bukan objek' dalam MySQLi?

Linda Hamilton
Linda Hamiltonasal
2024-12-07 20:22:16445semak imbas

How to Fix the

Menyelesaikan masalah "Panggil ke fungsi ahli fetch_assoc() pada bukan objek" Ralat

Apabila melaksanakan pertanyaan pangkalan data menggunakan sambungan mysqli, adalah mungkin untuk menghadapi ralat "Ralat maut: Panggilan ke fungsi ahli fetch_assoc() pada bukan objek." Ralat ini berlaku apabila pertanyaan gagal dan set keputusan mysqli yang terhasil adalah batal.

Analisis Isu

Dalam coretan kod yang diberikan, ralat timbul kerana pembolehubah $result tidak disemak untuk ralat selepas pertanyaan dilaksanakan. Oleh itu, ada kemungkinan bahawa $result adalah batal jika pertanyaan gagal, menyebabkan panggilan berikutnya untuk fetch_assoc() gagal.

Penyelesaian

Untuk menyelesaikan isu ini, adalah perlu untuk menyemak hasil panggilan mysqli_query() untuk ralat. Jika pertanyaan gagal, pengecualian harus dilemparkan untuk menunjukkan ralat. Kod yang disemak di bawah:

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;
}

Dengan menambahkan semakan if (!$result), kod memastikan bahawa sebarang ralat pangkalan data dikendalikan dengan baik dan pengecualian yang sesuai dilemparkan.

Atas ialah kandungan terperinci Bagaimana untuk Membetulkan Ralat 'Panggil ke fungsi ahli fetch_assoc() pada bukan objek' dalam MySQLi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn