Standard Tegas: mysqli_next_result() Ralat dengan mysqli_multi_query
Dalam kod PHP yang disediakan, percubaan untuk menggunakan mysqli_multi_query() pertanyaan dalam satu panggilan pangkalan data mencetuskan piawaian yang ketat ralat:
mysqli_next_result(): There is no next result set. Please, call mysqli_more_results()/mysqli::more_results() to check whether to call this function/method
Untuk menyelesaikan ralat ini, penyelesaian berikut ditawarkan:
do {} while (mysqli_more_results($db) && mysqli_next_result($db));
Pengubahsuaian ini memastikan mysqli_more_results() disemak sebelum menggunakan mysqli_next_result(). Selain itu, memandangkan tiada set hasil dikembalikan dalam kod yang disediakan, menyemak mysqli_affected_rows() dan bukannya keluar bersyarat mungkin merupakan pendekatan yang lebih baik.
Penyelesaian yang lebih komprehensif yang mengendalikan pertanyaan dengan atau tanpa set hasil menggunakan mysqli_multi_query() ialah disediakan:
if (mysqli_multi_query($mysqli, implode(';', $queries))) { do { if ($result = mysqli_store_result($mysqli)) { // Process result set } } while (next($queries) && mysqli_more_results($mysqli) && mysqli_next_result($mysqli)); } if ($mysqli_error = mysqli_error($mysqli)) { // Handle error }
Sebagai alternatif, versi "cipta semula" coretan menggunakan gelung sementara dibentangkan:
while ((isset($multi_query) && (next($queries) && mysqli_more_results($mysqli) && mysqli_next_result($mysqli))) || (!isset($multi_query) && $multi_query = mysqli_multi_query($mysqli, implode(';', $queries)))) { // Process query } if ($mysqli_error = mysqli_error($mysqli)) { // Handle error }
Coretan ini menyediakan mekanisme yang teguh untuk mengendalikan berbilang pertanyaan dan set hasil, menjadikannya sesuai untuk rangkaian senario yang lebih luas.
Atas ialah kandungan terperinci Bagaimana Mengendalikan Ralat `mysqli_next_result()` dengan betul dalam `mysqli_multi_query()` PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!