Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah saya melaksanakan berbilang pertanyaan MySQL dalam satu skrip PHP?

Bagaimanakah saya melaksanakan berbilang pertanyaan MySQL dalam satu skrip PHP?

Patricia Arquette
Patricia Arquetteasal
2024-11-10 15:33:02481semak imbas

How do I execute multiple MySQL queries in a single PHP script?

Melaksanakan Berbilang Pertanyaan MySQL dalam PHP

Apabila bekerja dengan MySQL dalam PHP, mungkin perlu melaksanakan berbilang pertanyaan bersama-sama. Ini berguna untuk membuat paparan, jadual sementara dan memanipulasi data dalam satu transaksi.

Senario Masalah

Pertimbangkan coretan kod berikut:

$query1 = "CREATE VIEW current_rankings AS SELECT * FROM main_table WHERE date = X";
$query2 = "CREATE VIEW previous_rankings AS SELECT rank FROM main_table WHERE date = date_sub('X', INTERVAL 1 MONTH)";
$query3 = "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)";
$query4 = "SELECT *, @rank_change = prev_rank - current_rank AS rank_change FROM final_output";

Matlamat kami adalah untuk melaksanakan semua empat pertanyaan dalam satu skrip PHP, dan kemudian gunakan mysql_fetch_array untuk mendapatkan semula keputusan pertanyaan keempat. Walau bagaimanapun, apabila cuba berbuat demikian, kami menghadapi ralat atau menerima tatasusunan pengambilan kosong.

Penyelesaian

Untuk melaksanakan berbilang pertanyaan dalam satu skrip PHP, kami boleh menggunakan mysqli_multi_query. Berikut ialah kod yang dikemas kini:

$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)) {
                echo $row['player'] . $row['current_rank'] . $row['prev_rank'] . $row['rank_change'];
            }
            mysqli_free_result($result);
        }
    } while (mysqli_next_result($link));
}

Menggunakan mysqli_multi_query, kami menggabungkan keempat-empat pertanyaan ke dalam satu rentetan dan melaksanakannya. Setiap set hasil kemudian disimpan dalam $result dan boleh diambil menggunakan mysqli_fetch_array.

Pendekatan Alternatif

Ia juga mungkin untuk melaksanakan pertanyaan secara berasingan dan menyimpan hasil dalam jadual sementara. Contohnya:

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

Dalam pendekatan ini, pertanyaan pertama mencipta jadual sementara bernama A. Kami kemudian memilih data daripada A dalam pertanyaan kedua dan mendapatkan semula hasilnya.

Kedua-dua pendekatan boleh digunakan bergantung pada keperluan khusus dan struktur pangkalan data.

Atas ialah kandungan terperinci Bagaimanakah saya melaksanakan berbilang pertanyaan MySQL dalam satu skrip 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