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 ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-06 07:13:11606parcourir

How to Execute Multiple MySQL Queries Efficiently in PHP?

Requêtes multiples MySQL en PHP

Lorsque vous traitez des opérations de base de données complexes, l'exécution de plusieurs requêtes dans un seul script PHP peut être nécessaire. Voici comment y parvenir en utilisant PHP et MySQL :

Dans votre cas, vous avez rencontré des erreurs en tentant de fusionner plusieurs requêtes en un seul résultat. Pour résoudre ce problème, la solution clé consiste à utiliser la fonction mysqli_multi_query(). En concaténant vos requêtes et en les transmettant à cette fonction, vous pouvez les exécuter séquentiellement.

Voici une version révisée de votre code en utilisant mysqli_multi_query() :

$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, previous_rankings.rank AS prev_rank FROM current_rankings LEFT JOIN previous_rankings ON (current_rankings.player = previous_rankings.player);";
$query .= "SELECT *, @rank_change = prev_rank - current_rank AS rank_change FROM final_output;";

if (mysqli_multi_query($link, $query)) {
    do {
        if ($result = mysqli_store_result($link)) {
            while ($row = mysqli_fetch_array($result)) {
                echo $row['player'] . ' ' . $row['current_rank'] . ' ' . $row['prev_rank'] . ' ' . $row['rank_change'] . '<br>';
            }
            mysqli_free_result($result);
        }
    } while (mysqli_next_result($link));
}

N'oubliez pas de remplacer "X" dans les requêtes avec le paramètre de date approprié.

Alternative Approche

Si l'exécution séquentielle des requêtes est suffisante, vous pouvez utiliser plusieurs appels mysqli_query() pour exécuter chaque requête individuellement. Par exemple :

$query1 = "Create temporary table A select c1 from t1;";
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'];
}

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:
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