Maison >base de données >tutoriel mysql >Pourquoi mes messages d'erreur de connexion MySQLi personnalisés ne s'affichent-ils pas en PHP ?

Pourquoi mes messages d'erreur de connexion MySQLi personnalisés ne s'affichent-ils pas en PHP ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-30 16:17:12751parcourir

Why Aren't My Custom MySQLi Connection Error Messages Displaying in PHP?

Messages d'erreur personnalisés en cas d'échec de MySQLi Connect en PHP : un guide complet

Dans votre extrait de code, vous rencontrez un problème où une erreur personnalisée Le message ne s'affiche pas lorsque la connexion MySQLi échoue. Auparavant, l'extension mysql de PHP nécessitait une gestion manuelle des erreurs via des vérifications if ($ conn). Cependant, avec l'avènement de PHP 8.1, mysqli lève désormais des exceptions sur les erreurs, éliminant ainsi le besoin de telles vérifications explicites.

Pourquoi les messages d'erreur personnalisés ne sont pas affichés

Dans les versions PHP modernes, MySQLi automatiquement génère des erreurs lorsqu’une connexion échoue. Ainsi, l'instruction if ($conn) est inutile et doit être supprimée pour permettre à l'exception d'être gérée efficacement.

Correction du code

Pour résoudre le problème, vous pouvez mettre à jour votre code comme suit :

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
    }
}

Masquer les erreurs des utilisateurs

Pour masquer les messages d'erreur des utilisateurs, vous pouvez utiliser PHP Option de configuration display_errors :

ini_set('display_errors', 0);

Affichage des pages d'erreur conviviales

Pour présenter une page d'erreur plus conviviale, vous pouvez implémenter un gestionnaire d'erreurs :

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.';
    }
});

Gestion des erreurs de connexion

Lorsqu'une gestion spécifique est requise pour les erreurs de connexion, vous pouvez utiliser try..catch blocs :

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

Masquage des informations d'identification de connexion

Pour empêcher les mots de passe de base de données d'apparaître dans les messages d'erreur, effectuez une mise à niveau vers PHP 8.2 ou version ultérieure.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn