首页 > 后端开发 > 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_next_result() 与 mysqli_multi_query 错误

确保正确使用 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{} 循环

While 经典的“IF(){DO{} WHILE}" 语法有效,是一种简化且更具可读性的替代方案是:

while((isset($multi_query) && (next($queries) && mysqli_more_results($mysqli) && mysqli_next_result($mysqli))) || (!isset($multi_query) && $multi_query = mysqli_multi_query($mysqli, 内爆(';', $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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板