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

Bagaimana untuk Melaksanakan Berbilang Pertanyaan MySQL dengan Cekap dalam PHP?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-04 00:57:10560semak imbas

How to Efficiently Execute Multiple MySQL Queries in PHP?

MySQL Berbilang Pertanyaan dengan PHP

Dalam PHP, melaksanakan berbilang pertanyaan MySQL dalam satu permintaan boleh mencabar. Artikel ini menangani situasi biasa di mana berbilang pertanyaan saling bergantung perlu digabungkan untuk pemprosesan yang cekap.

Pendekatan awal adalah untuk mencipta pandangan individu menggunakan pertanyaan yang disediakan. Walau bagaimanapun, ini mengakibatkan ralat atau set hasil kosong. Untuk menangani perkara ini, PHP menawarkan fungsi mysqli_multi_query(), yang membenarkan pelaksanaan pertanyaan bercantum.

Berikut ialah contoh coretan kod:

/* Create database connection */
$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 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 using mysqli_multi_query() */
if (mysqli_multi_query($link, $query)) {
    do {
        /* Store current result set */
        if ($result = mysqli_store_result($link)) {
            while ($row = mysqli_fetch_array($result)) {
                echo $row['player']. $row['current_rank']. $row['prev_rank']. $row['rank_change'];
            }
            mysqli_free_result($result);
        }
    } while (mysqli_next_result($link));
}

Pendekatan ini menggabungkan semua pertanyaan ke dalam rentetan tunggal dan melaksanakannya secara serentak. Fungsi mysqli_multi_query() mengembalikan TRUE apabila pelaksanaan berjaya.

Jika pelan pelaksanaan memerlukan pertanyaan tambahan, ia boleh ditambah pada rentetan $query dengan koma bertitik (;) sebagai pemisah. Setiap set hasil boleh disimpan dalam pembolehubah berasingan menggunakan mysqli_store_result() dan diambil menggunakan mysqli_fetch_array() dalam gelung.

Sebagai alternatif, anda juga boleh melaksanakan pertanyaan secara berasingan menggunakan fungsi mysqli_query():

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

Pendekatan ini membolehkan kawalan yang lebih besar ke atas pelaksanaan pertanyaan dan hasil pengendalian.

Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan 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