Rumah > pembangunan bahagian belakang > tutorial php > Bagaimana Mengendalikan Ralat `mysqli_next_result()` dengan betul dalam `mysqli_multi_query()` PHP?

Bagaimana Mengendalikan Ralat `mysqli_next_result()` dengan betul dalam `mysqli_multi_query()` PHP?

DDD
Lepaskan: 2024-12-07 15:50:13
asal
894 orang telah melayarinya

How to Properly Handle `mysqli_next_result()` Errors in PHP's `mysqli_multi_query()`?

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

Untuk menyelesaikan ralat ini, penyelesaian berikut ditawarkan:

do {} while (mysqli_more_results($db) && mysqli_next_result($db));
Salin selepas log masuk

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
}
Salin selepas log masuk

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
}
Salin selepas log masuk

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!

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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan