Lorsque vous utilisez MySQLI pour les opérations de base de données en PHP, vous rencontrez souvent des situations où les messages d'erreur doivent être imprimés. Habituellement, l'extension mysqli fournit un code d'erreur ( mysqli :: $ errno ) et des informations d'erreur ( MySQLI :: $ ERROR ) pour nous aider à des problèmes de rétroaction rapidement lorsqu'une erreur se produit. Mais comment imprimez-vous ces messages d'erreur gracieusement pour rendre le journal d'erreur plus clair et plus facile à déboguer? Cet article vous montrera comment utiliser mysqli :: $ errno gracieusement pour imprimer les codes d'erreur et les messages d'erreur dans PHP.
Tout d'abord, examinons comment utiliser MySQLI pour la connexion de la base de données et la gestion des erreurs de base dans PHP. Dans l'objet de connexion MySQLI , les messages d'erreur et les codes d'erreur peuvent être obtenus via les propriétés MySQLI :: $ ERROR et MYSQLI :: $ ERRNO .
<?php
$host = 'localhost';
$username = 'root';
$password = 'password';
$database = 'test_db';
// créer MySQLi connecter
$conn = new mysqli($host, $username, $password, $database);
// 检查connecter是否成功
if ($conn->connect_error) {
echo "connecter失败: " . $conn->connect_error;
exit();
}
// Exécuter une requête
$sql = "SELECT * FROM non_existing_table";
$result = $conn->query($sql);
// Vérifiez si la requête est réussie
if (!$result) {
// Imprimer les codes d'erreur et les messages d'erreur
echo "Code d'erreur: " . $conn->errno . "<br>";
echo "message d'erreur: " . $conn->error;
}
// 关闭connecter
$conn->close();
?>
Utilisez Connect_error pour vérifier si la connexion de la base de données est réussie.
Utilisez ERRNO et Erreur pour obtenir des codes d'erreur et des informations d'erreur.
Lors de l'exécution d'une requête, si une erreur se produit, les détails sont sortis via ERRNO et l'erreur .
Bien qu'il soit efficace de produire directement des messages d'erreur, dans les environnements de production, nous voulons généralement enregistrer les journaux d'erreur et éviter d'exposer des informations sensibles à l'utilisateur final. Dans le développement réel, la gestion des erreurs élégantes peut non seulement aider les développeurs à localiser rapidement les problèmes, mais également à améliorer la sécurité du système et l'expérience utilisateur.
Nous pouvons utiliser la fonction error_log () pour écrire des informations d'erreur dans le fichier journal. Voici le code amélioré:
<?php
$host = 'localhost';
$username = 'root';
$password = 'password';
$database = 'test_db';
$conn = new mysqli($host, $username, $password, $database);
if ($conn->connect_error) {
// utiliser error_log 记录connecter错误
error_log("connecter失败: " . $conn->connect_error, 3, "/var/log/php_errors.log");
exit();
}
$sql = "SELECT * FROM non_existing_table";
$result = $conn->query($sql);
if (!$result) {
// Journal d'erreur de journal
error_log("Code d'erreur: " . $conn->errno . " message d'erreur: " . $conn->error, 3, "/var/log/php_errors.log");
// 输出友好的message d'erreur
echo "L'opération a échoué,Veuillez réessayer plus tard。";
}
$conn->close();
?>
Utilisez Error_Log () pour écrire des informations d'erreur dans le fichier journal spécifié (tel que /var/log/php_errors.log ).
Affichez les messages d'erreur conviviaux à l'avant pour éviter d'exposer trop de détails techniques.
Écrivez des erreurs dans le fichier via le paramètre 3- .
Dans les environnements de production, nous désactivons généralement l'affichage des erreurs de PHP et la connectons dans le journal. Pour éviter que les informations d'erreur sensibles ne soient exposées aux utilisateurs finaux, nous pouvons désactiver la sortie d'erreur en modifiant PHP.ini ou en utilisant le code suivant:
<?php
// Désactiver l'affichage d'erreur
ini_set('display_errors', '0');
// Activer la journalisation des erreurs
ini_set('log_errors', '1');
ini_set('error_log', '/var/log/php_errors.log');
// connecter数据库并Exécuter une requête
$conn = new mysqli($host, $username, $password, $database);
if ($conn->connect_error) {
// 记录connecter错误
error_log("connecter失败: " . $conn->connect_error, 3, "/var/log/php_errors.log");
exit();
}
$sql = "SELECT * FROM non_existing_table";
$result = $conn->query($sql);
if (!$result) {
// 记录message d'erreur
error_log("Code d'erreur: " . $conn->errno . " message d'erreur: " . $conn->error, 3, "/var/log/php_errors.log");
echo "L'opération a échoué,Veuillez réessayer plus tard。";
}
$conn->close();
?>
ini_set ('display_errors', '0') : désactiver l'affichage d'erreur.
ini_set ('log_errors', '1') : activer la journalisation des erreurs.
Le message d'erreur est enregistré dans le fichier spécifié via la fonction error_log () .
Pour rendre la gestion des erreurs plus flexible, nous pouvons définir une fonction de gestion des erreurs personnalisée dans laquelle MySqli :: $ Errno et MySQLI :: $ Erreur sont gérés uniformément. Cela réduit le code en double et améliore la maintenabilité du code.
<?php
// Fonctions de traitement des erreurs personnalisées
function handleMysqliError($conn) {
// Les erreurs de journalisation pour enregistrer
error_log("Code d'erreur: " . $conn->errno . " message d'erreur: " . $conn->error, 3, "/var/log/php_errors.log");
// 显示友好的message d'erreur
echo "L'opération a échoué,Veuillez réessayer plus tard。";
}
// créer数据库connecter
$conn = new mysqli($host, $username, $password, $database);
if ($conn->connect_error) {
handleMysqliError($conn);
exit();
}
$sql = "SELECT * FROM non_existing_table";
$result = $conn->query($sql);
if (!$result) {
handleMysqliError($conn);
}
$conn->close();
?>
La fonction HandleMysQLierror résume la logique de la gestion des erreurs.
Lorsqu'une erreur se produit, l'appel directement la fonction simplifie le code, mais assure également une méthode de traitement des erreurs unifiée.
Dans PHP, il est très courant d'imprimer des messages d'erreur à l'aide de MySqli :: $ errno et mysqli :: $ error . Afin de rendre la gestion des erreurs plus élégante et plus sécurisée, nous pouvons améliorer la robustesse et l'expérience utilisateur du système par journalisation, désactivant la sortie d'erreur, en utilisant les fonctions de traitement des erreurs personnalisées, etc.
J'espère que cet article vous aidera à mieux comprendre comment gérer les erreurs dans les opérations de base de données gracieusement dans PHP. Si vous avez des questions, veuillez laisser un message à discuter!