厳格な標準: 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 サイトの他の関連記事を参照してください。