Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Membetulkan \'Strict Standards: mysqli_next_result() Error\' dengan mysqli_multi_query()?

Bagaimana untuk Membetulkan \'Strict Standards: mysqli_next_result() Error\' dengan mysqli_multi_query()?

DDD
DDDasal
2024-11-29 05:39:17972semak imbas

How to Fix

Standard Ketat: mysqli_next_result() Ralat dengan mysqli_multi_query

Isu:

Urusan saya>

Penyelesaian:

Untuk menyelesaikan isu ini, gunakan kod berikut:

do{} while(mysqli_more_results($db) && mysqli_next_result($db));

Penjelasan:

Ralat Standard Ketat berlaku kerana mysqli_more_results() mesti dipanggil untuk menyemak sama ada mysqli_next_result() harus digunakan. Coretan kod yang disediakan memastikan mysqli_next_result() hanya dipanggil jika terdapat set hasil lain.

Pertimbangan:

    Dalam contoh yang disediakan, hanya INSERT pertanyaan sedang dilaksanakan, yang tidak mengembalikan set hasil. Oleh itu, gelung tidak akan dilaksanakan dan ralat tidak akan berlaku.
  • Jika pertanyaan anda termasuk penyataan SELECT atau operasi lain yang mengembalikan set hasil, penyelesaian yang disediakan akan menghalang mesej ralat daripada muncul.
  • Coretan kod yang diubah suai menggunakan gelung do-while, yang merupakan ujian pasca dan tidak memerlukan rehat bersyarat atau keluar dalam gelung.

Penambahan:

Untuk pendekatan yang lebih mantap, pertimbangkan coretan kod berikut:

if(mysqli_multi_query($db,$querystring)){
    do{
        $cumulative_rows+=mysqli_affected_rows($db);
    } while(mysqli_more_results($db) && mysqli_next_result($db));
}
if($error_mess=mysqli_error($db)){echo "Error: $error_mess";}
echo "Cumulative Affected Rows: $cumulative_rows";
Coretan kod ini:

    Mengira baris yang terjejas daripada INSERT, KEMASKINI atau PADAM pertanyaan.
  • Memaparkan baris terkumpul terjejas.
  • Menyemak ralat dan menyediakan mesej ralat yang bermaklumat.

Nota Tambahan:

Untuk pengguna yang tidak dikenali mysqli_multi_query(), berikut ialah coretan kod serba boleh yang mengendalikan pertanyaan dengan atau tanpa set hasil:

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)))){
    echo "<br><br>",key($queries),": ",current($queries);  // display array pointer key:value
    if($result=mysqli_store_result($mysqli)){
        while($rows=mysqli_fetch_assoc($result)){
            echo "<br>Col = {$rows["Col"]}";
        }
        mysqli_free_result($result);
    }
    echo "<br>Rows = ",mysqli_affected_rows($mysqli); // acts like num_rows on SELECTs
}
Coretan kod ini:

    Berfungsi untuk semua jenis pertanyaan, termasuk SELECT , Sisipkan, KEMASKINI dan PADAM.
  • Menyediakan output terperinci, termasuk pertanyaan itu sendiri, nilai baris atau lajur yang terjejas dan kemungkinan ralat.
  • Boleh diubah suai dengan mudah untuk keperluan khusus atau struktur pangkalan data.

Atas ialah kandungan terperinci Bagaimana untuk Membetulkan \'Strict Standards: mysqli_next_result() Error\' dengan mysqli_multi_query()?. 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