Rumah >pangkalan data >tutorial mysql >Mengapa Mesej Ralat Tersuai Saya Tidak Dipaparkan Apabila mysqli_connect Gagal dalam PHP?
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.
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 }
Untuk menyembunyikan mesej ralat daripada pengguna, tetapkan display_errors kepada 0 dalam php.ini atau gunakan ini_set():
ini_set('display_errors', 0);
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."; } });
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 }
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!