首页 > 后端开发 > php教程 > 如何正确处理 PHP 的 `mysqli_multi_query()` 中的 `mysqli_next_result()` 错误?

如何正确处理 PHP 的 `mysqli_multi_query()` 中的 `mysqli_next_result()` 错误?

DDD
发布: 2024-12-07 15:50:13
原创
858 人浏览过

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

严格标准:mysqli_next_result() mysqli_multi_query 错误

在提供的 PHP 代码中,尝试使用 mysqli_multi_query() 执行多个查询在单个数据库调用中触发严格的标准错误:

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中文网其他相关文章!

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