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
Lepaskan: 2024-12-04 10:17:14
asal
186 orang telah melayarinya

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();
    }
}
Salin selepas log masuk

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
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan