Position actuelle: Accueil> Derniers articles> Comment imprimer élégamment mysqli :: $ errno avec message d'erreur en php

Comment imprimer élégamment mysqli :: $ errno avec message d'erreur en php

M66 2025-05-17

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.

1. Gestion des erreurs de base MySqli

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 .

Exemple de code:

 <?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&#39;erreur et les messages d&#39;erreur
    echo "Code d&#39;erreur: " . $conn->errno . "<br>";
    echo "message d&#39;erreur: " . $conn->error;
}

// 关闭connecter
$conn->close();
?>

expliquer:

  • 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 .

2. Gérer et enregistrer les messages d'erreur gracieusement

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.

Exemple: Message d'erreur de journalisation

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&#39;erreur de journal
    error_log("Code d&#39;erreur: " . $conn->errno . " message d&#39;erreur: " . $conn->error, 3, "/var/log/php_errors.log");

    // 输出友好的message d&#39;erreur
    echo "L&#39;opération a échoué,Veuillez réessayer plus tard。";
}

$conn->close();
?>

expliquer:

  • 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- .

3. Désactiver la production d'erreur élégante dans l'environnement de production

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:

Exemple de code:

 <?php
// Désactiver l&#39;affichage d&#39;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&#39;erreur
    error_log("Code d&#39;erreur: " . $conn->errno . " message d&#39;erreur: " . $conn->error, 3, "/var/log/php_errors.log");
    echo "L&#39;opération a échoué,Veuillez réessayer plus tard。";
}

$conn->close();
?>

expliquer:

  • 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 () .

4. Utiliser les fonctions de gestion des erreurs personnalisées

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.

Exemple de code:

 <?php
// Fonctions de traitement des erreurs personnalisées
function handleMysqliError($conn) {
    // Les erreurs de journalisation pour enregistrer
    error_log("Code d&#39;erreur: " . $conn->errno . " message d&#39;erreur: " . $conn->error, 3, "/var/log/php_errors.log");

    // 显示友好的message d&#39;erreur
    echo "L&#39;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();
?>

expliquer:

  • 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.

Conclusion

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!