Rumah > Artikel > pembangunan bahagian belakang > Bagaimanakah saya melaksanakan berbilang pertanyaan MySQL dalam satu skrip 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.
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.
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.
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!