Mesej ralat "mysqli::query(): Tidak dapat diambil mysqli dalam baris 43" menandakan masalah sambungan dengan Pangkalan data MySQL.
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(); } }
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.
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 }
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!