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

Comment puis-je exécuter et combiner efficacement plusieurs requêtes MySQL en PHP ?

Mary-Kate Olsen
Libérer: 2024-12-04 09:06:12
original
610 Les gens l'ont consulté

How Can I Efficiently Execute and Combine Multiple MySQL Queries in PHP?

Exécution de plusieurs requêtes en PHP/MySQL

Problème :

Exécution de plusieurs requêtes indépendantes et combiner les résultats en un résultat unique et cohérent en utilisant PHP et MySQL peut poser un problème. défi.

Solutions :

1. mysqli_multi_query()

  • Concaténez les instructions SQL avec des points-virgules (;).
  • Utilisez mysqli_multi_query() pour exécuter les multiples requêtes.
  • Stockez les résultats de chaque requête en utilisant mysqli_store_result().
  • Parcourez chaque résultat définir, récupérer les données et effectuer tout traitement nécessaire.

Exemple :

// establish MySQL connection
$link = mysqli_connect("server", "user", "password", "database");

// define multiple queries
$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
if (mysqli_multi_query($link, $query)) {
    // loop through each result set
    do {
        if ($result = mysqli_store_result($link)) {
            // fetch data from each result set
            while ($row = mysqli_fetch_array($result)) {
                // process the data...
            }
            // free result set memory
            mysqli_free_result($result);
        }
    } while (mysqli_next_result($link));
} else {
    // handle query execution error
}
Copier après la connexion

2. Requêtes séparées

  • Exécutez chaque requête séparément à l'aide de mysqli_query().
  • Stockez les résultats dans des tables ou des variables temporaires.
  • Combinez les résultats selon les besoins pour plus loin traitement.

Exemple :

// establish MySQL connection
$link = mysqli_connect("server", "user", "password", "database");

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

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

// fetch data from second query
while ($row = mysqli_fetch_array($result2)) {
    // process the data...
}
Copier après la connexion

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!

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