Kesalahan fatal tidak ada di MySQL; pemberitahuan indeks yang hilang adalah peringatan dengan tingkat keparahan yang relatif rendah.
Yang fatal kesalahan ada dalam kode PHP Anda, karena tiga kondisi berikut:
- mysqli melaporkan banyak peringatan, bahkan untuk kondisi yang relatif tidak berbahaya.
- Anda melempar
mysqli_sql_exception
untuk semua kesalahan dan peringatan karenamysqli_report(MYSQLI_REPORT_ALL);
. Anda baris. - Kode PHP Anda tidak menangkap pengecualian itu (yaitu tidak dalam
try{}
blokir dengancatch(){}
. yang sesuai blok), dan pengecualian yang tidak tertangkap berakibat fatal.
Anda tidak dapat berbuat banyak tentang yang pertama, seperti yang disebutkan dalam jawaban yang lain. Jadi, Anda dapat memperbaikinya dengan mengubah mysqli_report(...)
pengaturan ke MYSQLI_REPORT_STRICT
atau MYSQLI_REPORT_OFF
, atau memang apa pun selain MYSQLI_REPORT_ALL
.
(edit:komentar w3d di bawah ini memberikan penjelasan yang bagus mengapa, dan menyarankan Anda dapat menggunakan mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT)
sebagai alternatif yang baik)
Untuk praktik terbaik, dan dalam kombinasi dengan ini, Anda harus memperbaikinya dengan benar menggunakan try{}
dan catch(){}
sesuai dengan kode Anda.