Bagaimana untuk Melaksanakan Berbilang Pertanyaan dengan Cekap dalam PHP/MySQL?

Barbara Streisand
Lepaskan: 2024-11-11 19:16:02
asal
366 orang telah melayarinya

How to Efficiently Execute Multiple Queries in PHP/MySQL?

Melaksanakan Berbilang Pertanyaan untuk Data Komprehensif dalam PHP/MySQL

Apabila berurusan dengan analisis data yang kompleks, menjalankan berbilang pertanyaan dalam PHP/MySQL boleh memberikan penyelesaian yang lancar. Walau bagaimanapun, menggabungkan berbilang pertanyaan dan mengambil hasil secara manual boleh menjadi mencabar. Artikel ini meneroka teknik menggunakan mysqli_multi_query($link, $query) untuk melaksanakan berbilang pertanyaan serentak.

Pertimbangkan coretan kod berikut:

$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";
Salin selepas log masuk

Kod ini melaksanakan satu siri pertanyaan untuk buat paparan dan pilih data. Walau bagaimanapun, untuk mengambil keputusan menggunakan mysql_fetch_array, pertanyaan perlu dilaksanakan sebagai satu pertanyaan bercantum.

Menggunakan mysqli_multi_query

Fungsi pertanyaan mysqli_multi_execute membolehkan anda menggabungkan berbilang pertanyaan. dalam satu operasi. Untuk melakukan ini, anda perlu:

  1. Menggabungkan pertanyaan anda dengan sintaks yang betul.
  2. Memulakan sambungan MySQL anda menggunakan mysqli_connect.
  3. Gunakan mysqli_multi_query untuk melaksanakan pertanyaan yang digabungkan .
  4. Simpan set hasil pertama menggunakan mysqli_store_result.
  5. Lelaran melalui keputusan menggunakan mysqli_fetch_array.

Contoh dengan 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 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";

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'];
            }
            mysqli_free_result($result);
        }
    } while (mysqli_next_result($link));
}
Salin selepas log masuk
Kaedah Alternatif: Melaksanakan Pertanyaan Secara Berasingan

Melaksanakan pertanyaan secara berasingan membolehkan anda mengawal perintah pelaksanaan dan menggunakan jadual sementara. Untuk melaksanakan pertanyaan secara berasingan, anda boleh menggunakan:

Kaedah ini memerlukan anda membuat jadual sementara dan menjalankan pertanyaan tambahan untuk mendapatkan data daripadanya.
$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'];
}
Salin selepas log masuk

Memilih kaedah yang betul bergantung pada khusus anda keperluan. Jika anda memerlukan set hasil tunggal daripada berbilang pertanyaan, mysqli_multi_query ialah pilihan yang sesuai. Walau bagaimanapun, jika anda memerlukan lebih fleksibiliti dan kawalan ke atas perintah pelaksanaan, melaksanakan pertanyaan secara berasingan mungkin lebih disukai.

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

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan