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