Position actuelle: Accueil> Derniers articles> Comment utiliser mysqli_multi_query () pour implémenter l'exécution multi-statement après connect ()

Comment utiliser mysqli_multi_query () pour implémenter l'exécution multi-statement après connect ()

M66 2025-05-24

Lors de l'exploitation d'une base de données dans PHP, l'une des exigences communes consiste à exécuter plusieurs instructions SQL pour effectuer des transactions complexes ou un traitement de données par lots. La fonction MySQLI_MULTI_QUERY () est conçue pour cela, ce qui permet d'exécuter plusieurs instructions SQL en même temps, améliorant l'efficacité et simplifiant le code. Cet article expliquera en détail comment exécuter correctement plusieurs instructions SQL à l'aide de mysqli_multi_query () après avoir établi une connexion de base de données à l'aide de la fonction connect () et traitez le résultat de retour.

1. Établir une connexion de base de données

Tout d'abord, nous établissons une connexion à la base de données MySQL via la fonction connect () . Supposons qu'il s'agit d'une fonction emballée qui renvoie un objet MySQLI valide.

 <?php
function connect() {
    $host = 'localhost';
    $user = 'root';
    $password = 'password';
    $database = 'testdb';

    $conn = new mysqli($host, $user, $password, $database);

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

    return $conn;
}
?>

2. Exécutez plusieurs instructions SQL à l'aide de mysqli_multi_query ()

Supposons que nous ayons plusieurs instructions SQL à exécuter, telles que la création de tables, l'insertion de données, etc., et nous pouvons les combiner dans une chaîne à demi-finale ( ; ) et la transmettre à mysqli_multi_query () .

 <?php
$conn = connect();

$sql = "
CREATE TABLE IF NOT EXISTS users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL,
    email VARCHAR(100) NOT NULL
);
INSERT INTO users (username, email) VALUES ('Zhang San', 'zhangsan@m66.net');
INSERT INTO users (username, email) VALUES ('Li si', 'lisi@m66.net');
";

if ($conn->multi_query($sql)) {
    do {
        // Stocker le premier ensemble de résultats
        if ($result = $conn->store_result()) {
            while ($row = $result->fetch_assoc()) {
                print_r($row);
            }
            $result->free();
        }
        // S&#39;il y a plus d&#39;ensembles de résultats,Continuer la boucle
    } while ($conn->more_results() && $conn->next_result());
} else {
    echo "L&#39;exécution de l&#39;instruction multiple a échoué: " . $conn->error;
}

$conn->close();
?>

3. Description des points clés

  • Format de l'instruction SQL : plusieurs instructions SQL doivent être séparées par des demi-colons, et chaque instruction a la syntaxe correcte.

  • Traitement des résultats : Une fois MySqli_Multi_Query () exécuté, tous les ensembles de résultats doivent être traversés par Looping Store_result () et More_Results () . Même si certaines instructions ne renvoient pas le résultat, appelez next_result () pour passer au résultat suivant.

  • Gestion des erreurs : lorsque l'exécution échoue, vous pouvez obtenir des informations d'erreur spécifiques via $ Conn-> Erreur pour un débogage facile.

4. Instructions de remplacement de nom de domaine URL