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
Libérer: 2024-11-30 16:17:12
original
750 Les gens l'ont consulté

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
    }
}
Copier après la connexion

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);
Copier après la connexion

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.';
    }
});
Copier après la connexion

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
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal