Rumah >pembangunan bahagian belakang >tutorial php >Mengapa Pertanyaan MySQLi Tidak Melemparkan Pengecualian Walaupun dengan `mysqli_report(MYSQLI_REPORT_STRICT)`?

Mengapa Pertanyaan MySQLi Tidak Melemparkan Pengecualian Walaupun dengan `mysqli_report(MYSQLI_REPORT_STRICT)`?

Patricia Arquette
Patricia Arquetteasal
2024-12-31 07:24:11265semak imbas

Why Don't MySQLi Queries Throw Exceptions Even with `mysqli_report(MYSQLI_REPORT_STRICT)`?

Pengecualian untuk Ralat Pertanyaan MySQLi

Soalan

Walaupun menetapkan mysqli_report(MYSQLI_REPORT_STRICT), ralat pertanyaan dalam MySQLi tidak membuang pengecualian. mysqli_sql_exception hanya dilemparkan untuk ralat sambungan. Adakah perkara biasa untuk menyemak nilai pulangan mysqli_query() secara manual untuk mengesan kegagalan pertanyaan?

Jawapan

Ya, semakan manual selalunya diperlukan kerana:

  1. mysqli_report(): Memanggil mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); memang membolehkan balingan pengecualian.
  2. Cuba-tangkap: Bertentangan dengan kepercayaan popular, pengecualian tidak boleh digunakan secara berlebihan. Kebanyakan ralat harus dikendalikan secara berpusat oleh pengendali ralat seluruh tapak.

Kod terdahulu:

$result = mysqli_query($DBlink, $SQL);
if($result === false) {
    throw new MySQLiQueryException($SQL, mysqli_error($DBlink), mysqli_errno($DBlink));
}

Sebaliknya, gunakan cuba tangkap dengan berhati-hati untuk ralat yang memerlukan perhatian segera.

Atas ialah kandungan terperinci Mengapa Pertanyaan MySQLi Tidak Melemparkan Pengecualian Walaupun dengan `mysqli_report(MYSQLI_REPORT_STRICT)`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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