Mengendalikan Ralat Pertanyaan MySQLi sebagai Pengecualian
Pengenalan
Dalam MySQLi, ralat pertanyaan biasanya dilaporkan sebagai amaran atau mesej ralat. Walau bagaimanapun, pembangun mungkin memilih untuk menukar ralat ini kepada pengecualian untuk pengendalian ralat yang lebih baik. Artikel ini mengkaji proses menukar ralat pertanyaan MySQLi kepada pengecualian dan menangani isu biasa di mana kegagalan pertanyaan mengembalikan palsu tanpa mencetuskan amaran atau pengecualian.
Masalah
Apabila melaksanakan MySQLi pertanyaan, pembangun sering menyemak sama ada mysqli_query() mengembalikan palsu untuk mengesan ralat pertanyaan. Walau bagaimanapun, pendekatan ini boleh menyusahkan dan mungkin tidak selalu mendapat ralat yang tidak dijangka.
Kod Bekas
$result = mysqli_query($DBlink, $SQL); if ($result === false) { throw new MySQLiQueryException($SQL, mysqli_error($DBlink), mysqli_errno($DBlink)); }
Soalan
Mengapakah dalam sesetengah kes, amaran mahupun pengecualian tidak dilemparkan apabila pertanyaan gagal, memaksa pembangun untuk menyemak secara eksplisit nilai pulangan palsu daripada mysqli_query()?
Jawapan
Untuk mendayakan pengecualian bagi ralat pertanyaan MySQLi, anda mesti menetapkan tahap pelaporan ralat dengan betul menggunakan mysqli_report() fungsi. Coretan kod berikut menunjukkan penggunaan yang betul:
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
Dengan menetapkan tahap pelaporan ralat kepada MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT, MySQLi akan mula membuang pengecualian untuk semua ralat dan ralat ketat, termasuk kegagalan pertanyaan.
Awas
Walaupun menggunakan pengecualian untuk pengendalian ralat secara amnya disyorkan, ia adalah penting untuk mengelakkan penggunaan blok cuba-tangkap yang berlebihan. Pengendalian ralat hendaklah dipusatkan melalui pengendali ralat biasa untuk meminimumkan pembekuan kod dan memastikan pelaporan ralat yang konsisten.
Atas ialah kandungan terperinci Mengapa Pertanyaan MySQLi Kadang-kadang Gagal Secara Senyap, Memerlukan Pemeriksaan Nilai Pulangan Palsu Eksplisit?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!