Standard Ketat: Menyelesaikan ralat mysqli_next_result() dengan mysqli_multi_query
Memastikan penggunaan mysqli_multi_query yang betul adalah penting untuk mengelakkan penggunaan "Stric_multi_query" dengan betul Walaupun menghapuskan koma bertitik mungkin telah menghapuskan isu, ia tidak menyelesaikan masalah teras.
Untuk menangani mesej ralat, pertimbangkan cadangan berikut:
Memahami mysqli_next_result()
mysqli_next_result() memajukan penuding hasil ke seterusnya set hasil yang dihasilkan oleh mysqli_multi_query(). Walau bagaimanapun, pelaksanaannya memerlukan set hasil awal, yang tidak dijamin dalam semua kes.
Penyelesaian
Sertakan semakan berikut dalam gelung 'buat':
buat { if ($result = mysqli_store_result($db)) { // set hasil proses } } sambil (mysqli_more_results($db) && mysqli_next_result($db));
Sintaks Alternatif: WHILE{} Gelung
Sementara klasik "IF(){DO{} WHILE}" sintaks adalah sah, alternatif yang mudah dan lebih mudah dibaca ialah:
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))))
Pendekatan ini dengan jelas mentakrifkan syarat untuk melaksanakan gelung dan menyemak set hasil.
Snippet Komprehensif
Untuk penyelesaian yang komprehensif, pertimbangkan coretan berikut untuk mengendalikan pertanyaan dengan atau tanpa hasil set:
Klasik "JIKA(){DO{} WHILE}" Sintaks:
if (mysqli_multi_query($mysqli, implode(';', $queries))) { do { echo "<br><br>", key($queries), ": ", current($queries); // display key:value @ pointer if ($result = mysqli_store_result($mysqli)) { // if a result set 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 } while (next($queries) && mysqli_more_results($mysqli) && mysqli_next_result($mysqli)); } if ($mysqli_error = mysqli_error($mysqli)) { echo "<br><br>", key($queries), ": ", current($queries), "Syntax Error:<br>$mysqli_error"; // display array pointer key:value }
Roda Dicipta Semula "WHILE{}" Sintaks:
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 } if ($mysqli_error = mysqli_error($mysqli)) { echo "<br><br>", key($queries), ": ", current($queries), "Syntax Error:<br>$mysqli_error"; // display array pointer key:value }
Coretan ini mengendalikan pertanyaan dengan atau tanpa hasil dengan berkesan menetapkan dan menyediakan pengendalian ralat terperinci untuk tujuan nyahpepijat.
Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan \'Strict Standards: Menyelesaikan mysqli_next_result() Ralat\' dengan mysqli_multi_query?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!