Spécifie si les données déplacées sont copiées, déplacées ou liées, alors ignorés
PHP Version: 5+
PHP est un langage de programmation polyvalent qui offre de nombreuses fonctionnalités pour interagir avec des bases de données. Lorsque vous travaillez avec MySQL, vous pouvez être confronté à des situations où vous devez exécuter plusieurs requêtes SQL en une seule fois. Pour cela, PHP propose deux méthodes : multi_query() et mysqli_multi_query().
La fonction multi_query() et la méthode mysqli_multi_query() sont utilisées pour exécuter plusieurs requêtes SQL simultanément sur une connexion MySQL. Cela peut être utile lorsque vous devez effectuer des opérations complexes qui impliquent plusieurs requêtes.
$mysqli -> multi_query($query)
où $query est une chaine de caractères avec une seulle requête ou plusieurs requêtes séparées par des ";"
mysqli_multi_query(connection, query)
où $query est une chaine de caractères avec une seulle requête ou plusieurs requêtes séparées par des ";
Les fonctions multi_query() et mysqli_multi_query() prennent en paramètre la connexion MySQL active et une chaîne de requêtes SQL séparées par des points-virgules.
Voici un exemple pratique où nous utilisons multi_query() pour effectuer une série de requêtes SQL :
Exemple : Copier le code
<?php $conn = mysqli_connect("localhost", "utilisateur", "motdepasse", "basededonnees"); $queries = " INSERT INTO produits (nom, prix) VALUES ('Produit A', 10.99); INSERT INTO produits (nom, prix) VALUES ('Produit B', 12.99); UPDATE commandes SET statut = 'Expédiée' WHERE id = 1; "; if (mysqli_multi_query($conn, $queries)) { echo "Les requêtes ont été exécutées avec succès."; } else { echo "Une erreur s'est produite : " . mysqli_error($conn); } mysqli_close($conn); ?>
Exemple : Copier le code
<?php // Connexion à la base de données en utilisant MySQLi (Orienté objet) $mysqli = new mysqli("localhost", "utilisateur", "motdepasse", "basededonnees"); // Vérification de la connexion if ($mysqli->connect_error) { die("La connexion a échoué : " . $mysqli->connect_error); } // Chaîne de requêtes SQL séparées par des points-virgules $queries = " INSERT INTO produits (nom, prix) VALUES ('Produit A', 10.99); INSERT INTO produits (nom, prix) VALUES ('Produit B', 12.99); UPDATE commandes SET statut = 'Expédiée' WHERE id = 1; "; // Exécution des requêtes if ($mysqli->multi_query($queries)) { echo "Les requêtes ont été exécutées avec succès."; } else { echo "Une erreur s'est produite : " . $mysqli->error; } // Fermeture de la connexion $mysqli->close(); ?>
Voici un autre exemple pratique où nous utilisons multi_query() pour effectuer une série de requêtes SQL :
L'exemple suivant montre comment créer une table et insérer des données en une seule fois.
Exemple : Copier le code
<?php // Crée un objet MySQLi $mysqli = new mysqli(); // Initialise l'objet $mysqli->init(); // Établit une connexion à la base de données $mysqli->real_connect('localhost', 'root', '', 'teste'); // Exécuter une requête $link=$mysqli; if ($link->connect_error) { die('Erreur de connexion : ' . $link->connect_error); }else echo 'connexion réusie'; echo "<br>"; $queries = [ 'CREATE TABLE IF NOT EXISTS my_table (id INT AUTO_INCREMENT, name VARCHAR(255) NOT NULL, PRIMARY KEY (id))', 'INSERT INTO my_table (name) VALUES ("John Doe")', 'SELECT * FROM my_table', ]; // Convertit le tableau en chaîne $queries = implode(';', $queries); // Exécute la requête if ($link->multi_query($queries)) { echo 'Les requêtes ont été exécutées avec succès.'; } else { echo 'Une erreur s\'est produite lors de l\'exécution des requêtes. '. mysqli_error($link); } ?>
Exemple : Copier le code
<?php // Crée une connexion MySQLi procédurale $mysqli = mysqli_connect('localhost', 'root', '', 'teste'); // Vérifie la connexion if (!$mysqli) { die('Erreur de connexion : ' . mysqli_connect_error()); } else { echo 'Connexion réussie<br>'; } $queries = [ 'CREATE TABLE IF NOT EXISTS my_table (id INT AUTO_INCREMENT, name VARCHAR(255) NOT NULL, PRIMARY KEY (id))', 'INSERT INTO my_table (name) VALUES ("John Doe")', 'SELECT * FROM my_table', ]; // Convertit le tableau en chaîne $queries = implode(';', $queries); // Exécute la requête if (mysqli_multi_query($mysqli, $queries)) { echo "Les requêtes ont été exécutées avec succès."; } else { echo "Une erreur s'est produite lors de l'exécution des requêtes. " . mysqli_error($mysqli); } // Ferme la connexion mysqli_close($mysqli); ?>
Avis de sécurité : Détection d'injection SQL Si la requête inclut des variables d'entrée, il est fortement recommandé d'utiliser des déclarations préparées paramétrisées. En alternative, il est essentiel de bien formater les données et d'échapper correctement toutes les chaînes de caractères en utilisant la fonction mysqli_real_escape_string().
En conclusion, multi_query() et sont des outils puissants pour exécuter plusieurs requêtes SQL en une seule fois en PHP. Utilisez-les judicieusement pour améliorer les performances de votre application lors de l'interaction avec une base de données MySQL.