Maison > développement back-end > tutoriel php > Comment exécuter plusieurs requêtes SQL dans un seul jeu de résultats avec PHP/MySQL ?

Comment exécuter plusieurs requêtes SQL dans un seul jeu de résultats avec PHP/MySQL ?

Linda Hamilton
Libérer: 2024-11-11 15:37:03
original
630 Les gens l'ont consulté

How to Execute Multiple SQL Queries in a Single Result Set with PHP/MySQL?

Exécuter plusieurs requêtes en PHP/MySQL

Question :

Comment puis-je combiner plusieurs Requêtes SQL dans un seul jeu de résultats en PHP à l'aide de MySQL ?

Réponse :

Pour exécuter plusieurs requêtes concaténées en PHP à l'aide de MySQL, suivez ces étapes :

  1. Créez l'instruction SQL :
    Concaténez les requêtes SQL individuelles en une seule chaîne, séparées par des points-virgules (;). Assurez-vous qu'il y a deux points-virgules à la fin de chaque requête, sauf la dernière.
  2. Connectez-vous à la base de données :
    Utilisez la fonction mysqli_connect pour établir une connexion à la base de données.
  3. Préparer la requête :
    Utilisez la fonction mysqli_prepare pour préparer l'instruction à requêtes multiples.
$query = "SQL STATEMENT 1;;SQL STATEMENT 2;;SQL STATEMENT 3";
Copier après la connexion
  1. Exécuter les requêtes :
    Utilisez la fonction mysqli_multi_query pour exécuter l'instruction préparée.
if (mysqli_multi_query($link, $query)) {
    do {
        // Store and process results
    } while (mysqli_next_result($link));
}
Copier après la connexion
  1. Récupérer les résultats :
    Après avoir exécuté les requêtes, utilisez mysqli_fetch_array pour récupérer les résultats à partir de chaque requête.

Exemple :

$link = mysqli_connect("server", "user", "password", "database");

$query = "CREATE VIEW current_rankings AS SELECT * FROM main_table WHERE date = X;;
CREATE VIEW previous_rankings AS SELECT rank FROM main_table WHERE date = date_sub('X', INTERVAL 1 MONTH);;
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);;
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)) {
                // Process results
            }
            mysqli_free_result($result);
        }
    } while (mysqli_next_result($link));
}
Copier après la connexion

Approche alternative :

Alternativement, vous pouvez exécuter chaque requête séparément et traitez les résultats un par un. Cette approche est recommandée si les requêtes ne sont pas interdépendantes.

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

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

while($row = mysqli_fetch_array($result2)) {
    // Process results
}
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal