Rumah >pembangunan bahagian belakang >tutorial php >Mengapa Saya Mendapat 'Ralat Maut: fetch_assoc() pada Bukan Objek' dalam Pertanyaan Pangkalan Data PHP Saya?

Mengapa Saya Mendapat 'Ralat Maut: fetch_assoc() pada Bukan Objek' dalam Pertanyaan Pangkalan Data PHP Saya?

Linda Hamilton
Linda Hamiltonasal
2024-12-09 00:23:14691semak imbas

Why Am I Getting a

Ralat Maut: fetch_assoc() pada Bukan Objek

Apabila melaksanakan pertanyaan pangkalan data, anda mungkin menghadapi mesej ralat berikut:

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

Ralat ini berlaku apabila kaedah fetch_assoc() dipanggil pada bukan objek, biasanya objek mysqli_result.

Analisis Masalah:

Dalam coretan kod yang disediakan, anda mungkin telah menulis fungsi seperti berikut:

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

Jika $result bukan objek, panggilan fetch_assoc() akan gagal. Ini boleh berlaku jika terdapat ralat dalam pertanyaan SQL, yang menyebabkan query() mengembalikan false dan bukannya objek hasil.

Penyelesaian:

Untuk menyelesaikan ralat, semak nilai pulangan pertanyaan (). Jika ia mengembalikan palsu, buang pengecualian atau kendalikan ralat dengan sewajarnya. Contohnya:

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

Dengan menangkap ralat dalam query(), anda boleh memastikan fetch_assoc() hanya dipanggil pada objek hasil yang sah, menghalang ralat bukan objek.

Atas ialah kandungan terperinci Mengapa Saya Mendapat 'Ralat Maut: fetch_assoc() pada Bukan Objek' dalam Pertanyaan Pangkalan Data PHP Saya?. 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