ホームページ > バックエンド開発 > PHPチュートリアル > mysqli_multi_query で「厳格な標準: mysqli_next_result() エラーの解決」を解決する方法

mysqli_multi_query で「厳格な標準: mysqli_next_result() エラーの解決」を解決する方法

DDD
リリース: 2024-11-28 06:29:15
オリジナル
454 人が閲覧しました

How to Resolve the

厳格な標準: mysqli_multi_query による mysqli_next_result() エラーの解決

「厳格な標準」メッセージの発生を回避するには、mysqli_multi_query を適切に使用することが重要です。セミコロンを削除すると問題が解決された可能性がありますが、根本的な問題は解決されませんでした。

エラー メッセージに対処するには、次の提案を検討してください。

mysqli_next_result() について

mysqli_next_result() は、結果ポインタを、によって生成された次の結果セットに進めます。 mysqli_multi_query()。ただし、その実行には初期結果セットが必要であり、すべての場合に保証されるわけではありません。

解決策

「do」ループ内に次のチェックを組み込みます。

do { if ($result = mysqli_store_result($db)) { // 結果セットを処理 } } while (mysqli_more_results($db) && mysqli_next_result($db));

代替構文: WHILE{} ループ

従来の "IF(){DO{} WHILE}" 構文は有効であり、簡素化され、より読みやすい代替手段です。 is:

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))))

このアプローチは、ループの実行と結果セットのチェックの条件を明確に定義します。

包括的なスニペット

包括的な解決策として、結果の有無にかかわらずクエリを処理するための次のスニペットを検討してください。セット:

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

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