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.
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.
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 } }
Pour masquer les messages d'erreur des utilisateurs, vous pouvez utiliser PHP Option de configuration display_errors :
ini_set('display_errors', 0);
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.'; } });
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 }
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!