Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menjalankan Berbilang Pertanyaan MySQL dengan Cekap dalam PHP?

Bagaimana untuk Menjalankan Berbilang Pertanyaan MySQL dengan Cekap dalam PHP?

DDD
DDDasal
2024-12-07 01:45:16963semak imbas

How to Efficiently Run Multiple MySQL Queries in PHP?

Menjalankan Berbilang Pertanyaan dalam PHP dengan MySQL

Pertimbangkan senario di mana anda perlu melaksanakan berbilang pertanyaan SQL dalam satu skrip PHP. Satu pendekatan biasa ialah menggunakan fungsi mysqli_multi_query(), yang membolehkan anda menggabungkan berbilang pertanyaan ke dalam satu rentetan.

Berikut ialah contoh cara anda boleh mencapai ini:

// 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);
}

Sebagai alternatif , jika anda ingin melaksanakan setiap pertanyaan secara berasingan, anda boleh menggunakan fungsi mysqli_query() berbilang 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'];
}

Memilih antara menggabungkan berbilang pertanyaan ke dalam satu rentetan melalui mysqli_multi_query() atau melaksanakannya secara berasingan melalui mysqli_query() bergantung pada keperluan khusus anda dan pertimbangan prestasi.

Atas ialah kandungan terperinci Bagaimana untuk Menjalankan Berbilang Pertanyaan MySQL dengan Cekap dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn