Heim > Datenbank > MySQL-Tutorial > Warum wird meine benutzerdefinierte Fehlermeldung nicht angezeigt, wenn mysqli_connect in PHP fehlschlägt?

Warum wird meine benutzerdefinierte Fehlermeldung nicht angezeigt, wenn mysqli_connect in PHP fehlschlägt?

Mary-Kate Olsen
Freigeben: 2024-11-30 17:35:14
Original
549 Leute haben es durchsucht

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

Warum zeigt PHP keine benutzerdefinierte Fehlermeldung an, wenn mysqli_connect fehlschlägt?

In der Vergangenheit verwendete PHP die MySQL-Erweiterung, um eine Verbindung zu Datenbanken herzustellen, was eine manuelle Fehlerbehandlung erforderte . Mit der Einführung von mysqli werden Fehler jedoch automatisch ausgelöst, sodass manuelle Prüfungen wie if (!$conn) nicht mehr erforderlich sind.

In PHP 8.1 und höher löst mysqli Ausnahmen für Fehler aus. Daher wird die benutzerdefinierte Fehlermeldung in Ihrem Code nicht angezeigt.

So behandeln Sie Verbindungsfehler

Der empfohlene Ansatz besteht darin, einen Try-Catch-Block zur Behandlung von Datenbankverbindungsfehlern zu verwenden, anstatt sich darauf zu verlassen manuelle Prüfungen:

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

So verbergen Sie Fehlermeldungen vor Benutzern

Um Fehlermeldungen vor Benutzern auszublenden, setzen Sie display_errors auf 0 in php.ini oder mit ini_set():

ini_set('display_errors', 0);
Nach dem Login kopieren

So zeigen Sie benutzerfreundliche Fehlerseiten an

Verwenden Sie einen Fehlerhandler, um eine generische Fehlerseite anstelle der spezifischen Fehlermeldung anzuzeigen :

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.";
    }
});
Nach dem Login kopieren

So testen Sie Verbindungsanmeldeinformationen

Verwenden Sie einen separaten Verbindungstest mit try-catch, um Anmeldeinformationen für Installationsskripte oder Sicherungsszenarien zu testen:

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

So verbergen Sie Verbindungsanmeldeinformationen

In PHP 8.2 und höher wird das Datenbankkennwort aus dem Stack-Trace ausgeblendet.

Das obige ist der detaillierte Inhalt vonWarum wird meine benutzerdefinierte Fehlermeldung nicht angezeigt, wenn mysqli_connect in PHP fehlschlägt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage