Aller au contenu

multi_query

Dans cet article, nous allons nous concentrer sur la fonction mysqli_multi_query() en PHP, qui permet d’exécuter plusieurs requêtes en un seul appel. Nous vous présenterons un aperçu de la fonction, son fonctionnement et des exemples d’utilisation.

Introduction à la fonction mysqli_multi_query()

La fonction mysqli_multi_query() est une fonction intégrée de PHP qui permet d’exécuter plusieurs requêtes en un seul appel. Cette fonction est utile lorsque vous devez exécuter une série de requêtes dépendantes les unes des autres ou lorsque vous devez exécuter un lot de requêtes en une seule fois.

Comment utiliser la fonction mysqli_multi_query()

L’utilisation de la fonction mysqli_multi_query() est très simple. Il vous suffit d’appeler la fonction sur une connexion MySQLi valide avec une chaîne contenant plusieurs requêtes séparées par des points-virgules. Voici un exemple :

Comment utiliser la fonction mysqli_multi_query() ?

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

if (!$mysqli) {
    die("Connection failed: " . mysqli_connect_error());
}

$query = "INSERT INTO table1 VALUES ('value1', 'value2', 'value3');";
$query .= "UPDATE table2 SET column1 = 'newvalue' WHERE id = 1;";

if (mysqli_multi_query($mysqli, $query)) {
    do {
        if ($result = mysqli_store_result($mysqli)) {
            while ($row = mysqli_fetch_row($result)) {
                print_r($row);
            }
            mysqli_free_result($result);
        }
    } while (mysqli_next_result($mysqli));
} else {
    echo "Error: " . mysqli_error($mysqli);
}

mysqli_close($mysqli);
?>

Dans cet exemple, nous appelons la fonction mysqli_connect() pour nous connecter à une base de données MySQL avec un nom d’utilisateur et un mot de passe. Nous créons ensuite une chaîne contenant deux requêtes séparées par des points-virgules. Nous appelons ensuite la fonction mysqli_multi_query() sur la connexion MySQLi pour exécuter les deux requêtes en même temps. Nous fermons ensuite la connexion MySQLi à l’aide de la fonction mysqli_close().

Considérations importantes :

  • mysqli_multi_query() peut renvoyer plusieurs jeux de résultats. La boucle do...while avec mysqli_store_result() et mysqli_next_result() garantit que tous les résultats sont récupérés et vidés correctement afin d’éviter les erreurs « Commands out of sync ».
  • Vérifiez toujours la valeur de retour de mysqli_multi_query() pour gérer les échecs d’exécution avec élégance.
  • Cette fonction ne prend pas directement en charge les requêtes préparées. Pour les requêtes impliquant une entrée utilisateur, utilisez mysqli_prepare() pour chaque requête individuellement afin d’éviter les injections SQL.
  • Pour les requêtes dépendantes qui doivent réussir ou échouer ensemble, privilégiez l’utilisation de transactions (mysqli_begin_transaction(), mysqli_commit(), mysqli_rollback()) plutôt que mysqli_multi_query() afin de garantir l’atomicité.

Conclusion

En conclusion, la fonction mysqli_multi_query() est un outil utile pour exécuter plusieurs requêtes en un seul appel. En comprenant comment utiliser la fonction, gérer plusieurs jeux de résultats et appliquer les bonnes pratiques comme les transactions et les requêtes préparées, vous pouvez créer des requêtes MySQLi puissantes et efficaces.

Practice

What is the primary purpose of the 'multi_query' function in PHP?

Trouvez-vous cela utile?

Aperçu dual-run — comparez avec les routes Symfony en production.