Position actuelle: Accueil> Derniers articles> MySQLI :: Multi_Query gère les erreurs d'exécution multi-statement avec $ errno

MySQLI :: Multi_Query gère les erreurs d'exécution multi-statement avec $ errno

M66 2025-05-28

Dans PHP, lorsque nous utilisons des bases de données MySQL, l'extension MySQLI fournit des fonctionnalités riches pour gérer les opérations de base de données. Surtout lors de la gestion de l'exécution de plusieurs instructions SQL, la méthode MySqli :: Multi_Query et l'attribut mysqli :: $ errno sont des outils très importants. Cet article expliquera en détail comment utiliser les deux pour gérer efficacement les erreurs qui peuvent se produire lors de l'exécution multi-statement.

1. Qu'est-ce que MySqli :: Multi_Query et MySqli :: $ Errno ?

  1. mysqli :: Multi_Query :
    Multi_Query est une méthode de la classe MySQLI qui exécute une requête contenant plusieurs instructions SQL. Il peut exécuter plusieurs instructions à la fois et renvoyer le résultat. En règle générale, nous l'utilisons lors de l'exécution de plusieurs requêtes, en particulier lorsqu'elle implique des transactions ou des insertions par lots.

     $mysqli->multi_query("SQLDéclaration1; SQLDéclaration2; SQLDéclaration3;");
    
  2. mysqli :: $ errno :
    L'attribut Errno représente le code d'erreur généré par l'opération MySQL précédente. Si une erreur se produit lors de l'exécution d'une requête SQL, nous pouvons obtenir le code d'erreur via $ mysqli-> errno . Grâce à cette propriété, nous pouvons facilement vérifier si une erreur s'est produite et prendre des mesures correspondantes.

     if ($mysqli->errno) {
        echo "Code d'erreur: " . $mysqli->errno;
    }
    

2. Comment gérer les erreurs dans l'exécution de plusieurs instructions?

Lorsque vous utilisez MySqli :: Multi_Query pour exécuter plusieurs instructions SQL, si une instruction ne parvient pas à s'exécuter, nous pouvons obtenir les informations d'erreur via mysqli :: $ errno et effectuer un traitement correspondant. Voici un exemple pour expliquer comment les utiliser.

Exemple de code:

 <?php
// créer MySQLi connecter
$mysqli = new mysqli("localhost", "root", "password", "database");

// 检查connecter是否成功
if ($mysqli->connect_error) {
    die("connecter失败: " . $mysqli->connect_error);
}

// Multiple SQL Déclaration
$sql = "
    INSERT INTO users (username, email) VALUES ('user1', 'user1@example.com');
    INSERT INTO users (username, email) VALUES ('user2', 'user2@example.com');
    INSERT INTO users (username, email) VALUES ('user3', 'user3@example.com');
";

// 执行Multiple SQL Déclaration
if ($mysqli->multi_query($sql)) {
    do {
        // Obtenez l&#39;ensemble de résultats de la requête actuelle
        if ($result = $mysqli->store_result()) {
            // Traiter les résultats de la requête
            while ($row = $result->fetch_row()) {
                printf("%s\n", $row[0]);
            }
            $result->free();
        }
        // Vérifiez s&#39;il y a plus d&#39;ensembles de résultats
    } while ($mysqli->next_result());
    
    // Vérifier les erreurs
    if ($mysqli->errno) {
        echo "Erreur d&#39;exécution: " . $mysqli->error;
    } else {
        echo "所有Déclaration执行成功!";
    }
} else {
    // 如果多Déclaration查询失败,Message d&#39;erreur de sortie
    echo "L&#39;exécution a échoué: " . $mysqli->error;
}

$mysqli->close();
?>

expliquer:

  1. Exécution de Multi_Query :
    Dans le code, nous utilisons la méthode MySQLI :: Multi_Query pour exécuter plusieurs instructions SQL. Il renvoie True si l'exécution est réussie, sinon il renvoie False .

  2. Traitement de plusieurs ensembles de résultats :
    Une fois Multi_Query exécuté, nous devons vérifier s'il y a plus de jeux de résultats via mysqli :: next_result , et obtenir les résultats de la requête actuelle via mysqli :: store_result . Nous pouvons traiter chaque résultat un résultat un par un.

  3. Gestion des erreurs :
    Une fois l'exécution multi-statement terminée, nous pouvons vérifier si une erreur s'est produite via mysqli :: $ errno . Si une erreur se produit, vous pouvez obtenir des informations d'erreur détaillées via MySQLI :: Erreur et les traiter.

  4. Fermez la connexion :
    Une fois toutes les opérations terminées, n'oubliez pas de fermer la connexion de la base de données.

3. Résumé

  • MySQLI :: Multi_Query est une méthode puissante qui peut être utilisée pour exécuter plusieurs instructions SQL.

  • L'utilisation de mysqli :: $ errno nous aide à attraper et à gérer les erreurs lors de l'exécution de plusieurs stades.

  • Lors de la gestion des requêtes à plusieurs stades, nous devons nous assurer que chaque ensemble de résultats est traité correctement et vérifier si des erreurs se sont produites à temps.

En utilisant ces deux ensemble, nous pouvons capturer et gérer plus efficacement diverses erreurs possibles dans l'exécution multi-statement, améliorant ainsi la stabilité et la fiabilité de notre code.