Lorsque vous utilisez MySQL, nous exécuterons parfois plusieurs requêtes SQL pour obtenir plusieurs ensembles de résultats à la fois. Dans PHP, si vous utilisez l'extension MySQLI , vous pouvez utiliser la méthode Multi_Query () pour exécuter plusieurs requêtes à la fois, puis traiter ces résultats un par un via next_result () et mysqli_fetch_assoc () .
Ci-dessous, nous démontrerons ce processus à travers des exemples.
Supposons que nous ayons une base de données avec deux tables: les utilisateurs et les commandes . Nous voulons interroger le contenu dans les deux tables en même temps.
<?php
// Créer une connexion de base de données
$mysqli = new mysqli("localhost", "username", "password", "database");
// Vérifiez si la connexion réussit
if ($mysqli->connect_error) {
die("Échec de la connexion: " . $mysqli->connect_error);
}
// Construire plusieurs lignesSQLDéclaration
$sql = "SELECT id, name FROM users;";
$sql .= "SELECT id, user_id, total FROM orders;";
// utilisermulti_query()执行多条Déclaration
if ($mysqli->multi_query($sql)) {
do {
// utiliserstore_result()Obtenez l'ensemble de résultats actuel
if ($result = $mysqli->store_result()) {
// Itérer à travers l'ensemble de résultats actuel
while ($row = $result->fetch_assoc()) {
print_r($row);
}
$result->free(); // Libérez la ressource de jeu de résultats actuel
}
// S'il y a un prochain ensemble de résultats,Continuer
} while ($mysqli->more_results() && $mysqli->next_result());
} else {
echo "Erreur de requête: " . $mysqli->error;
}
// Fermez la connexion de la base de données
$mysqli->close();
?>
Cette fonction vous permet d'exécuter plusieurs instructions SQL dans une seule demande. Ceci est très utile dans l'exécution par lots des requêtes et la réduction du nombre de demandes.
Cette fonction est utilisée pour obtenir le jeu de résultats actuel et le lire ligne par ligne avec fetch_assoc () .
Renvoie une ligne dans l'ensemble de résultats en tant que tableau associatif, adapté à l'extraction de données dans une boucle.
Cette fonction est utilisée pour préparer le jeu de résultats suivant. Après le traitement de l'ensemble de résultats actuel, il doit être appelé pour entrer le jeu de résultats suivant.
Chaque fois qu'un ensemble de résultats est traité, assurez-vous d'utiliser Free () pour libérer la ressource.
Soyez prudent pour éviter les problèmes d'injection SQL. Si l'instruction de requête implique l'entrée de l'utilisateur, assurez-vous d'utiliser des instructions de prétraitement.
Vérifiez More_Results () pour vous assurer qu'il y a plus de jeux de résultats à traiter.
Vous pouvez utiliser Multi_query () + next_result () dans certains scénarios:
Rapport backend Requête plusieurs tables
Exécuter les procédures stockées pour renvoyer plusieurs ensembles de résultats
Optimiser les performances et réduire les interactions de base de données
En combinant Multi_Query () avec next_result () et mysqli_fetch_assoc () , nous pouvons gérer gracieusement plusieurs ensembles de résultats, améliorer l'efficacité du programme et la simplicité du code.
Comme indiqué ci-dessus, que vous développiez des applications d'entreprise ou que vous créiez vos propres services, la maîtrise de l'utilisation de ces fonctions vous aidera à utiliser la base de données plus efficacement.
Si vous voulez en savoir plus sur le contenu, veuillez visiter: https://gitbox.net pour des tutoriels et des matériaux plus pratiques.