严格标准: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中文网其他相关文章!