首頁 >後端開發 >php教程 >如何使用 mysqli_multi_query 解決「嚴格標準:解決 mysqli_next_result() 錯誤」?

如何使用 mysqli_multi_query 解決「嚴格標準:解決 mysqli_next_result() 錯誤」?

DDD
DDD原創
2024-11-28 06:29:15433瀏覽

How to Resolve the

嚴格標準:解決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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn