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
$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 boucledo...whileavecmysqli_store_result()etmysqli_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 quemysqli_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?