Position actuelle: Accueil> Derniers articles> Comment localiser avec précision les erreurs via $ errno lors de l'utilisation de MySqli :: Query

Comment localiser avec précision les erreurs via $ errno lors de l'utilisation de MySqli :: Query

M66 2025-05-28

Dans PHP, l'extension MySQLI fournit des fonctions d'interaction de base de données riches, qui peuvent aider les développeurs à se connecter et à fonctionner efficacement avec les bases de données MySQL. La méthode MySQLI :: Query est généralement utilisée pour exécuter des requêtes de base de données, mais lors de l'exécution de la requête, vous pouvez rencontrer diverses erreurs. Afin d'améliorer l'efficacité du dépannage des erreurs, les erreurs lorsqu'elles sont utilisées avec MySqli :: Query peuvent être situées avec précision via l'attribut mysqli :: $ errno .

Cet article présentera comment utiliser MySQLI :: $ Errno pour attraper des erreurs et fournir des informations d'erreur détaillées pour aider les développeurs à localiser les problèmes plus rapidement.

1. Comprendre Mysqli :: Query et MySqli :: $ errno

La méthode MySQLI :: Requête est utilisée pour exécuter une instruction de requête SQL, renvoyer les résultats de la requête ou renvoyer true ou false lors de l'exécution d'insertion , de mise à jour , de supprimer et d'autres opérations pour modifier la base de données.

L'attribut mysqli :: $ errno contient le code d'erreur de la dernière opération de base de données. Grâce à cette propriété, nous pouvons comprendre si une erreur s'est produite lors de l'exécution des instructions SQL et même d'obtenir le type d'erreur spécifique.

Voici les usages de base de MySqli :: Query :

 <?php
$mysqli = new mysqli("localhost", "username", "password", "database");

if ($mysqli->connect_error) {
    die("Connection failed: " . $mysqli->connect_error);
}

$sql = "SELECT * FROM users";
$result = $mysqli->query($sql);

if (!$result) {
    echo "Query failed with error code: " . $mysqli->errno;
} else {
    // Traiter les résultats de la requête
}
?>

Dans l'exemple ci-dessus, nous exécutons l'instruction SQL Query via MySQLI :: Query et utilisons MySQLI :: $ Errno pour obtenir le code d'erreur lorsque la requête échoue.

2. Comment localiser les erreurs via mysqli :: $ errno

En vérifiant la propriété mysqli :: $ errno , nous pouvons obtenir le code d'erreur sur la défaillance de l'opération de base de données. Sur la base du code d'erreur, nous pouvons davantage comprendre le problème. Par exemple, les codes d'erreur courants incluent:

  • 1049 : base de données inconnue.

  • 1146 : Le tableau n'existe pas.

  • 1064 : Erreur de syntaxe SQL.

Exemple: erreurs de positionnement précises

 <?php
$mysqli = new mysqli("localhost", "username", "password", "database");

if ($mysqli->connect_error) {
    die("Connection failed: " . $mysqli->connect_error);
}

// Faux SQL Déclaration,Erreur de syntaxe
$sql = "SELEC * FROM users"; // Avis,Je l&#39;ai écrit ici exprès `SELECT`
$result = $mysqli->query($sql);

if (!$result) {
    // Obtenir le code d&#39;erreur et les informations d&#39;erreur
    echo "Query failed with error code: " . $mysqli->errno . " - " . $mysqli->error;
} else {
    // Traiter les résultats de la requête
}
?>

Dans l'exemple ci-dessus, nous avons délibérément écrit une instruction SQL incorrecte ( SELEC * des utilisateurs ). Lorsque l'exécution de la requête échoue, nous obtenons le code d'erreur via mysqli :: $ errno et obtenons les informations d'erreur via MySQLI :: $ Erreur . Cela peut nous aider à clarifier les problèmes spécifiques des erreurs de syntaxe SQL.

3. Modèles de gestion des erreurs courantes

Dans le développement réel, nous combinons généralement MySQLI :: $ Errno et MySQLI :: $ Erreur pour la gestion des erreurs pour s'assurer que les problèmes peuvent être rapidement découverts et résolus. Voici quelques façons courantes de gérer les erreurs:

3.1 Catching Errers SQL

 <?php
$mysqli = new mysqli("localhost", "username", "password", "database");

if ($mysqli->connect_error) {
    die("Connection failed: " . $mysqli->connect_error);
}

$sql = "SELECT * FROM users";
$result = $mysqli->query($sql);

if (!$result) {
    switch ($mysqli->errno) {
        case 1146:
            echo "Table not found: " . $mysqli->error;
            break;
        case 1064:
            echo "SQL syntax error: " . $mysqli->error;
            break;
        default:
            echo "Database error: " . $mysqli->error;
    }
} else {
    // Traiter les résultats de la requête
}
?>

Dans cet exemple, nous représentons des informations d'erreur spécifiques basées sur différents codes d'erreur (tels que le tableau n'existe pas ou les erreurs de syntaxe SQL), afin que les développeurs puissent savoir plus clairement ce qui se passe.

3.2 Utiliser les erreurs de journalisation

Dans les environnements de production, il n'est généralement pas recommandé de produire directement des informations d'erreur aux utilisateurs, en particulier les erreurs liées à la base de données. Pour améliorer la sécurité, nous pouvons enregistrer les informations d'erreur dans le fichier journal pour une visualisation ultérieure.

 <?php
$mysqli = new mysqli("localhost", "username", "password", "database");

if ($mysqli->connect_error) {
    die("Connection failed: " . $mysqli->connect_error);
}

$sql = "SELECT * FROM users";
$result = $mysqli->query($sql);

if (!$result) {
    // Enregistrement
    error_log("SQL Error [" . $mysqli->errno . "]: " . $mysqli->error, 3, "/path/to/error.log");
    echo "An error occurred. Please check the log file for details.";
} else {
    // Traiter les résultats de la requête
}
?>

Ici, la fonction error_log écrit des informations d'erreur dans le fichier journal pour aider les développeurs à suivre et à résoudre les problèmes.

4. Résumé

Grâce à la propriété mysqli :: $ Errno , nous pouvons capturer avec précision les erreurs dans les opérations de base de données et localiser et résoudre davantage des problèmes en fonction des codes d'erreur et des informations d'erreur. Combinés à un bon mécanisme de gestion des erreurs, les développeurs peuvent déboguer et optimiser plus efficacement les interactions PHP et MySQL.

N'oubliez pas que la bonne gestion des erreurs aide non seulement les développeurs à déboguer le code, mais améliore également la stabilité des applications et l'expérience utilisateur.