mysqli::query(): objek mysqli sudah ditutup / tidak dapat mengambil ralat mysqli
Kod PHP yang disediakan menggunakan kelas (EventCalendar) yang menguruskan sambungan pangkalan data dan melaksanakan pertanyaan. Walau bagaimanapun, mesej ralat menunjukkan bahawa objek mysqli telah ditutup atau ralat berlaku semasa mengambil ralat mysqli.
Memahami Ralat
Apabila objek mysqli ditutup lebih awal, pertanyaan berikutnya akan gagal dengan ralat "objek mysqli sudah ditutup". Ini boleh berlaku jika objek DBConnect ditutup sebelum semua pertanyaan telah dilaksanakan.
Bahagian kedua ralat, "tidak dapat mengambil ralat mysqli," menunjukkan bahawa skrip cuba mendapatkan semula mesej ralat yang dikaitkan dengan operasi mysqli sebelumnya, tetapi mesej ralat tidak dapat diambil, mungkin disebabkan oleh penutupan sambungan.
Menyelesaikan Isu
Pastikan objek DBConnect tidak ditutup sehingga semua pertanyaan yang diperlukan telah dilaksanakan. Dalam kod yang disediakan, objek DBConnect ditutup dalam kaedah __destruct(). Alihkan penamatan sambungan sebenar ke tempat yang lebih sesuai, seperti selepas semua pertanyaan telah dilaksanakan dan objek tidak diperlukan lagi.
Selain itu, pertimbangkan untuk menyemak status sambungan sebelum melaksanakan pertanyaan untuk mengendalikan kemungkinan masalah sambungan dengan anggun.
Contoh Kod yang disemak
Berikut ialah semakan semula bahagian kod yang menangani kemungkinan isu penutupan:
// Function to add events to Zodiac calendar
Atas ialah kandungan terperinci Mengapa objek mysqli PHP saya ditutup lebih awal, menyebabkan 'objek mysqli sudah ditutup / tidak dapat mengambil ralat mysqli'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!