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";
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:
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)); }
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']; }
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!