Benutzerdefinierte Fehlermeldungen bei MySQLi Connect-Fehlern in PHP: Eine umfassende Anleitung
In Ihrem Code-Snippet stoßen Sie auf ein Problem, bei dem ein benutzerdefinierter Fehler aufgetreten ist Die Meldung wird nicht angezeigt, wenn die MySQLi-Verbindung fehlschlägt. Zuvor erforderte die MySQL-Erweiterung von PHP eine manuelle Fehlerbehandlung durch if (!$conn)-Prüfungen. Mit der Einführung von PHP 8.1 löst mysqli nun jedoch Ausnahmen bei Fehlern aus, sodass solche expliziten Prüfungen nicht mehr erforderlich sind.
In modernen PHP-Versionen löst MySQLi automatisch aus löst Fehler aus, wenn eine Verbindung fehlschlägt. Daher ist die if (!$conn)-Anweisung unnötig und sollte entfernt werden, damit die Ausnahme effektiv behandelt werden kann.
Um das Problem zu beheben, können Sie Ihren Code aktualisieren wie folgt:
function connectDatabase(){ $dbServerName = 'local_host'; $dbUsername = 'root'; $dbPassword = ''; $dbName = 'kishor_me'; try { $conn = mysqli_connect($dbServerName, $dbUsername, $dbPassword, $dbName); } catch (Exception $e) { // Handle the connection error here } }
Um Fehlermeldungen vor Benutzern zu verbergen, können Sie PHPs verwenden display_errors-Konfigurationsoption:
ini_set('display_errors', 0);
Um eine benutzerfreundlichere Fehlerseite anzuzeigen, können Sie einen Fehlerhandler implementieren:
set_exception_handler(function ($e) { error_log($e); http_response_code(500); if (ini_get('display_errors')) { echo $e; } else { echo '<h1>500 Internal Server Error</h1><br>An internal server error has been occurred.<br>Please try again later.'; } });
Wenn eine spezifische Behandlung von Verbindungsfehlern erforderlich ist, können Sie try..catch verwenden blockiert:
try { $conn = mysqli_connect($dbServerName, $dbUsername, $dbPassword, $dbName); } catch (Exception $e) { // Handle the connection error here }
Um zu verhindern, dass Datenbankkennwörter in Fehlermeldungen angezeigt werden, aktualisieren Sie auf PHP 8.2 oder höher.
Das obige ist der detaillierte Inhalt vonWarum werden in PHP keine Fehlermeldungen zu meiner benutzerdefinierten MySQLi-Verbindung angezeigt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!