ホームページ > バックエンド開発 > PHPチュートリアル > PHP の `mysqli_multi_query()` の `mysqli_next_result()` エラーを適切に処理する方法

PHP の `mysqli_multi_query()` の `mysqli_next_result()` エラーを適切に処理する方法

DDD
リリース: 2024-12-07 15:50:13
オリジナル
893 人が閲覧しました

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

厳格な標準: mysqli_next_result() mysqli_multi_query のエラー

提供された PHP コードで、mysqli_multi_query() を使用して複数のクエリを実行しようとしました単一のデータベース呼び出しで厳格な基準がトリガーされますerror:

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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート