Maison > base de données > tutoriel mysql > Comment exécuter efficacement plusieurs requêtes MySQL en PHP ?

Comment exécuter efficacement plusieurs requêtes MySQL en PHP ?

Mary-Kate Olsen
Libérer: 2024-12-04 00:57:10
original
560 Les gens l'ont consulté

How to Efficiently Execute Multiple MySQL Queries in PHP?

Requêtes multiples MySQL avec PHP

En PHP, exécuter plusieurs requêtes MySQL dans une seule requête peut être difficile. Cet article traite d'une situation courante dans laquelle plusieurs requêtes interdépendantes doivent être combinées pour un traitement efficace.

L'approche initiale consistait à créer des vues individuelles à l'aide des requêtes fournies. Cependant, cela entraînait des erreurs ou des jeux de résultats vides. Pour résoudre ce problème, PHP propose la fonction mysqli_multi_query(), qui permet l'exécution de requêtes concaténées.

Voici un exemple d'extrait de code :

/* Create database connection */
$link = mysqli_connect("server", "user", "password", "database");

$query = "CREATE VIEW current_rankings AS SELECT * FROM main_table WHERE date = X;";
$query .= "CREATE VIEW previous_rankings AS SELECT rank FROM main_table WHERE date = date_sub('X', INTERVAL 1 MONTH);";
$query .= "CREATE VIEW final_output AS SELECT current_rankings.player, current_rankings.rank as current_rank LEFT JOIN previous_rankings.rank as prev_rank ON (current_rankings.player = previous_rankings.player);";
$query .= "SELECT *, @rank_change = prev_rank - current_rank as rank_change from final_output;";

/* Execute multiple queries using mysqli_multi_query() */
if (mysqli_multi_query($link, $query)) {
    do {
        /* Store current result set */
        if ($result = mysqli_store_result($link)) {
            while ($row = mysqli_fetch_array($result)) {
                echo $row['player']. $row['current_rank']. $row['prev_rank']. $row['rank_change'];
            }
            mysqli_free_result($result);
        }
    } while (mysqli_next_result($link));
}
Copier après la connexion

Cette approche combine toutes les requêtes dans un chaîne unique et les exécute simultanément. La fonction mysqli_multi_query() renvoie TRUE en cas d'exécution réussie.

Si le plan d'exécution nécessite des requêtes supplémentaires, elles peuvent être ajoutées à la chaîne $query avec des points-virgules (;) comme séparateurs. Chaque ensemble de résultats peut être stocké dans une variable distincte à l'aide de mysqli_store_result() et récupéré à l'aide de mysqli_fetch_array() dans une boucle.

Vous pouvez également exécuter des requêtes séparément à l'aide de la fonction mysqli_query() :

$query1 = "Create temporary table A select c1 from t1"; 
$result1 = mysqli_query($link, $query1) or die(mysqli_error());

$query2 = "select c1 from A"; 
$result2 = mysqli_query($link, $query2) or die(mysqli_error());

while($row = mysqli_fetch_array($result2)) {
    echo $row['c1'];
}  
Copier après la connexion

Cette approche permet un meilleur contrôle sur l'exécution des requêtes et la gestion des résultats.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal