Rumah >pangkalan data >tutorial mysql >Mengapa Mesej Ralat Tersuai Saya Tidak Dipaparkan Apabila mysqli_connect Gagal dalam PHP?

Mengapa Mesej Ralat Tersuai Saya Tidak Dipaparkan Apabila mysqli_connect Gagal dalam PHP?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-30 17:35:14546semak imbas

Why Doesn't My Custom Error Message Show When mysqli_connect Fails in PHP?

Mengapa PHP tidak menunjukkan mesej ralat tersuai apabila mysqli_connect gagal?

Pada masa lalu, PHP menggunakan sambungan MySQL untuk menyambung ke pangkalan data, yang memerlukan pengendalian ralat manual . Walau bagaimanapun, dengan pengenalan mysqli, ralat dilemparkan secara automatik, menghapuskan keperluan untuk semakan manual seperti if (!$conn).

Dalam PHP 8.1 dan lebih baru, mysqli membuang pengecualian untuk ralat. Oleh itu, mesej ralat tersuai dalam kod anda tidak dipaparkan.

Cara Mengendalikan Ralat Sambungan

Pendekatan yang disyorkan ialah menggunakan blok cuba-tangkap untuk mengendalikan ralat sambungan pangkalan data dan bukannya bergantung pada semakan manual:

try {
    $conn = mysqli_connect($dbServerName, $dbUsername, $dbPassword, $dbName);
} catch (Exception $e) {
    // Handle the error here
}

Cara Menyembunyikan Mesej Ralat daripada Pengguna

Untuk menyembunyikan mesej ralat daripada pengguna, tetapkan display_errors kepada 0 dalam php.ini atau gunakan ini_set():

ini_set('display_errors', 0);

Cara Memaparkan Halaman Ralat Mesra Pengguna

Gunakan pengendali ralat untuk memaparkan generik halaman ralat dan bukannya mesej ralat tertentu:

set_exception_handler(function ($e)
{
    // Log the error
    error_log($e);

    // Set HTTP status code to 500
    http_response_code(500);

    // Check display_errors setting
    if (ini_get('display_errors')) {
        echo $e;
    } else {
        echo "<h1>500 Internal Server Error</h1>An internal server error has occurred. Please try again later.";
    }
});

Cara Menguji Sambungan Bukti kelayakan

Gunakan ujian sambungan berasingan dengan try-catch untuk menguji kelayakan skrip pemasangan atau senario sandaran:

try {
    $conn = mysqli_connect($dbServerName, $dbUsername, $dbPassword, $dbName);
} catch (Exception $e) {
    // Handle the error
}

Cara Menyembunyikan Bukti Kelayakan Sambungan

Dalam PHP 8.2 dan kemudian, kata laluan pangkalan data disembunyikan daripada surih tindanan.

Atas ialah kandungan terperinci Mengapa Mesej Ralat Tersuai Saya Tidak Dipaparkan Apabila mysqli_connect Gagal dalam PHP?. 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