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 ?

DDD
DDDoriginal
2024-12-07 01:45:16962parcourir

How to Efficiently Run Multiple MySQL Queries in PHP?

Exécuter plusieurs requêtes en PHP avec MySQL

Considérez un scénario dans lequel vous devez exécuter plusieurs requêtes SQL dans un seul script PHP. Une approche courante consiste à utiliser la fonction mysqli_multi_query(), qui vous permet de concaténer plusieurs requêtes en une seule chaîne.

Voici un exemple de la façon dont vous pourriez y parvenir :

// Create database connection
$conn = mysqli_connect('server', 'user', 'password', 'database');

// Construct the multiple queries as a single string
$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 the multiple queries
if (mysqli_multi_query($conn, $query)) {
    // Process each result set
    do {
        // Check for the first result set
        if ($result = mysqli_store_result($conn)) {
            // Fetch and display the results
            while ($row = mysqli_fetch_array($result)) {
                echo $row['player'] . ' ' . $row['current_rank'] . ' ' . $row['prev_rank'] . ' ' . $row['rank_change'];
            }
            // Free the result set
            mysqli_free_result($result);
        }
    } while (mysqli_next_result($conn));
} else {
    // Handle any errors
    echo mysqli_error($conn);
}

Alternativement , si vous souhaitez exécuter chaque requête séparément, vous pouvez utiliser la fonction mysqli_query() multiple times :

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

// Select from temporary table A
$query2 = "select c1 from A";
$result2 = mysqli_query($conn, $query2) or die(mysqli_error($conn));

// Fetch and display the results
while ($row = mysqli_fetch_array($result2)) {
    echo $row['c1'];
}

Le choix entre concaténer plusieurs requêtes en une seule chaîne via mysqli_multi_query() ou les exécuter séparément via mysqli_query() dépend de vos exigences spécifiques et de vos considérations de performances.

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