首頁 >後端開發 >php教程 >如何正確處理 PHP 的 `mysqli_multi_query()` 中的 `mysqli_next_result()` 錯誤?

如何正確處理 PHP 的 `mysqli_multi_query()` 中的 `mysqli_next_result()` 錯誤?

DDD
DDD原創
2024-12-07 15:50:13859瀏覽

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

嚴格標準:mysqli_next_result() mysqli_multi_query 錯誤

在提供的 PHP 程式碼中,嘗試使用 my_sql執行多個查詢在單一資料庫呼叫中觸發嚴格的標準錯誤:

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

要解決此錯誤,提供以下解決方案:

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

此修改可確保在使用mysqli_next_result( ) 之前檢查mysqli_more_results()。此外,由於提供的程式碼中沒有傳回結果集,因此檢查 mysqli_affected_rows() 而不是條件退出可能是更好的方法。

使用 mysqli_multi_query() 處理帶或不帶結果集的查詢的更全面的解決方案是提供:

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
}

或者,使用 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)))) {
    // Process query
}

if ($mysqli_error = mysqli_error($mysqli)) {
    // Handle error
}

這些片段提供了處理多個查詢和結果集的強大機制,使它們適用於更廣泛的場景。

以上是如何正確處理 PHP 的 `mysqli_multi_query()` 中的 `mysqli_next_result()` 錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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