Position actuelle: Accueil> Derniers articles> Utilisez $ errno pour automatiser les tests de différents types de défaillance SQL

Utilisez $ errno pour automatiser les tests de différents types de défaillance SQL

M66 2025-05-28

Lorsque vous utilisez des bases de données MySQL dans PHP, vous pouvez rencontrer une erreur lors de l'exécution de requêtes SQL. Afin de faciliter le positionnement de ces erreurs, le code d'erreur fourni par MySqli :: $ Errno peut être utilisé pour déterminer la cause de l'échec et le gérer en conséquence. Cet article mettra en place comment identifier et tester automatiquement divers types d'échecs d'exécution SQL avec mysqli :: $ errno .

1. Comprendre mysqli :: $ errno

mysqli :: $ errno est un attribut contenant le code d'erreur de la requête MySQL récemment exécutée. Il renvoie une valeur entière qui représente différents types d'erreurs. Ceci est très utile pour les développeurs et peut nous aider à localiser les problèmes lors de l'exécution de SQL.

Habituellement, MySQLI :: $ Errno et MySqli :: $ Erreur sont utilisés ensemble, ce dernier renverra le message d'erreur lorsqu'une erreur se produit, tandis que le premier fournit le code d'erreur spécifique pour l'erreur. Grâce à ces informations, les erreurs SQL peuvent être gérées en conséquence.

2. Codes d'erreur MySQL communes

Voici plusieurs exemples courants de code d'erreur MySQL et leurs significations:

Code d'erreur Description d'erreur
1045 Accès refusé (pas d'autorisation d'accès)
1064 Erreur de syntaxe SQL
1146 Le tableau n'existe pas
1054 La colonne n'existe pas
1062 Entrée en double (violation unique des contraintes)

Lorsque vous exécutez des requêtes SQL, vous pouvez vérifier ces codes d'erreur via mysqli :: $ errno et les traiter en conséquence en conséquence.

3. Utilisez mysqli :: $ errno pour gérer les erreurs

Tout d'abord, nous avons besoin d'une instance qui se connecte à la base de données MySQL, puis exécutez une requête SQL et vérifiez s'il y a une erreur. Voici un exemple de code:

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

if ($mysqli->connect_error) {
    die("Échec de la connexion: " . $mysqli->connect_error);
}

$query = "SELECT * FROM non_existent_table"; // Intentionnellement écrit de mauvais nom de table
$result = $mysqli->query($query);

if (!$result) {
    // Si la requête échoue,Obtenir des codes d&#39;erreur et des informations d&#39;erreur
    echo "Code d&#39;erreur: " . $mysqli->errno . "<br>";
    echo "message d&#39;erreur: " . $mysqli->error . "<br>";

    // 根据Code d&#39;erreur做不同的处理
    switch ($mysqli->errno) {
        case 1045:
            echo "Aucune autorisation d&#39;accès,Veuillez vérifier les autorisations de l&#39;utilisateur de la base de données。";
            break;
        case 1064:
            echo "SQL Erreur de syntaxe,Veuillez vérifier la syntaxe de requête。";
            break;
        case 1146:
            echo "Le tableau n&#39;existe pas,Veuillez vérifier le nom du tableau。";
            break;
        case 1054:
            echo "La colonne n&#39;existe pas,Veuillez vérifier le nom de la colonne。";
            break;
        case 1062:
            echo "Répéter les entrées,Violation des contraintes uniques。";
            break;
        default:
            echo "Autres erreurs,Vérifiez s&#39;il vous plaît。";
    }
} else {
    // Interroger réussi,Résultats de traitement
    while ($row = $result->fetch_assoc()) {
        echo "données: " . $row['column_name'] . "<br>";
    }
}

$mysqli->close();
?>

Dans le code ci-dessus, si l'exécution SQL échoue, le code d'erreur et le message d'erreur seront imprimés en premier. Ensuite, en fonction de la valeur de mysqli :: $ errno , nous jugeons le type d'erreur via l'instruction Switch et fournissons des invites d'erreur spécifiques.

4. Utilisez mysqli :: $ errno pour les tests d'erreur

Vous pouvez tester l'effet de mysqli :: $ errno en introduisant intentionnellement des erreurs. Par exemple, vous pouvez essayer les erreurs courantes suivantes:

  • Nom de la table d'erreur: lorsque la table de requête n'existe pas, MySQL renverra le code d'erreur 1146 (la table n'existe pas).

  • Erreur SQL Syntaxe: les erreurs de syntaxe renvoient généralement le code d'erreur 1064 .

  • Problème d'autorisation: si l'utilisateur de la base de données n'a pas de permis de suffisamment d'autorisations, le code d'erreur 1045 est renvoyé.

Pendant les tests, vous pouvez modifier l'instruction SQL Query pour déclencher ces erreurs et obtenir le code d'erreur correspondant via mysqli :: $ errno .

5. Exemple: requête SQL qui a échoué avec le test URL

Dans certaines requêtes SQL complexes, elle peut impliquer l'utilisation d'URL ou de sources de données externes. Si des ressources externes sont impliquées dans la requête, nous pouvons utiliser une méthode similaire à ce qui suit pour vérifier si l'URL est valide:

  • Étiquettes associées:

    SQL