嚴格標準:解決mysqli_next_result() 與mysqli_multi_query 錯誤
確保正確使用mysqli_multi_quei_multi_quei_multi_quei_multi_quei_multi_quei_multi_quei_multi_quei_multi_quei_multi_quei_multi_quei_multi_quei_multi_quei_multi_quei” 。雖然消除分號可能已經消除了問題,但它並沒有解決核心問題。
要解決錯誤訊息,請考慮以下建議:
了解mysqli_next_result()
mysqli_next_result() 將結果指標前進到由myqueisql_m) 。然而,它的執行需要一個初始結果集,這並不能在所有情況下得到保證。
解決方案
在'do' 循環中合併以下檢查:
do { if ($result = mysqli_store_result($db)) { // 處理結果集} } while (mysqli_more_results($db) && mysqli_next_result($db));
替代語法:WHILE{} 循環
While 經典的「IF(){DO{} WHILE}"語法有效,是一種簡化且更具可讀性的替代方案是:
while((isset($multi_query) && (next($queries) && mysqli_more_results($mysqli) && mysqli_next_result($myext_result($mysqli) && mysqli_next_result($myext. ))) || (!isset($multi_query) && $multi_query = mysqli_multi_query($mysqli, 內爆(';', $queries))))
這種方法明確定義了執行循環和檢查結果集的條件。
綜合片段
對於綜合解決方案,請考慮以下片段來處理帶或不帶結果集的查詢:
經典"IF(){DO{} WHILE}"語法:
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 }
重新發明的輪子"WHILE{}" 語法:
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 }
這些片段有效地處理帶有或不帶有結果集的查詢,並提供詳細的錯誤處理以用於調試目的。
以上是如何使用 mysqli_multi_query 解決「嚴格標準:解決 mysqli_next_result() 錯誤」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!