Rumah >pembangunan bahagian belakang >tutorial php >Mengapa Kod MySQLi Saya Membuang 'mysqli::query(): Tidak dapat mengambil mysqli' Ralat?

Mengapa Kod MySQLi Saya Membuang 'mysqli::query(): Tidak dapat mengambil mysqli' Ralat?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-04 10:17:14188semak imbas

Why Does My MySQLi Code Throw

Ralat MySQLI: Objek Ditutup atau Ralat Mengambil

Penerangan Isu

Mesej ralat "mysqli::query(): Tidak dapat diambil mysqli dalam baris 43" menandakan masalah sambungan dengan Pangkalan data MySQL.

Snippet Kod

Segmen kod yang disebut termasuk fail sambungan ("inc_LadleDB.php") dan kelas ("EventCalendar") yang berinteraksi dengan pangkalan data. Berikut ialah kod yang berkaitan:

// Connection file
$DBConnect = @new mysqli("localhost", "root@localhost", NULL, "Ladle");

// Class constructor
function __construct() {
    include("inc_LadleDB.php");
    $this->DBConnect = $DBConnect;  
}

// Class destructor
function __destruct() {
    if (!$this->DBConnect->connect_error) {
        $this->DBConnect->close();
    }
}

Punca

Ralat timbul kerana sambungan pangkalan data ditutup lebih awal, khususnya dalam kaedah pemusnah "__destruct()". Apabila objek dimusnahkan, ia menutup sambungan pangkalan data, tetapi pertanyaan seterusnya terus cuba untuk dilaksanakan, membawa kepada ralat.

Penyelesaian

Untuk menyelesaikan isu, pastikan bahawa sambungan pangkalan data kekal terbuka semasa pelaksanaan semua pertanyaan. Satu penyelesaian yang mungkin adalah untuk mengalih keluar pernyataan "close()" daripada pemusnah. Pertimbangkan pengubahsuaian berikut:

// Class destructor
function __destruct() {
    // Do not close the connection here
}

Petua

Ingat, kaedah "__destruct()" dipanggil secara automatik apabila objek dimusnahkan, jadi menutup sambungan di sana mungkin membawa kepada ralat jika lain pertanyaan atau operasi pangkalan data masih dilakukan.

Atas ialah kandungan terperinci Mengapa Kod MySQLi Saya Membuang 'mysqli::query(): Tidak dapat mengambil mysqli' Ralat?. 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