为什么会出现这个 PHP 错误:“严格标准:mysqli::next_result():没有下一个结果集。”?

2023-12-07

我有代码,它基本上是一个副本php.net的代码,但由于某种原因它不起作用。这是 php.net 上的代码:

<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

$query  = "SELECT CURRENT_USER();";
$query .= "SELECT Name FROM City ORDER BY ID LIMIT 20, 5";

/* execute multi query */
if ($mysqli->multi_query($query)) {
    do {
        /* store first result set */
        if ($result = $mysqli->store_result()) {
            while ($row = $result->fetch_row()) {
                printf("%s\n", $row[0]);
            }
            $result->free();
        }
        /* print divider */
        if ($mysqli->more_results()) {
            printf("-----------------\n");
        }
    } while ($mysqli->next_result());
}

/* close connection */
$mysqli->close();
?>

我所做的第一个更改是连接:

$mysqli = new mysqli("localhost", "root", "", "fanfiction");

我所做的第二个更改是查询:

$query = "SELECT first FROM tests;";
$query .= "SELECT second FROM tests;";
$query .= "SELECT third FROM tests;";
$query .= "SELECT fourth FROM tests";

编辑:我的更改的完整代码

<?php
$mysqli = new mysqli("localhost", "root", "", "fanfiction");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

$query = "SELECT first FROM tests;";
$query .= "SELECT second FROM tests;";
$query .= "SELECT third FROM tests;";
$query .= "SELECT fourth FROM tests";

/* execute multi query */
if ($mysqli->multi_query($query)) {
    do {
        /* store first result set */
        if ($result = $mysqli->store_result()) {
            while ($row = $result->fetch_row()) {
                printf("%s\n", $row[0]);
            }
            $result->free();
        }
        /* print divider */
        if ($mysqli->more_results()) {
            printf("-----------------\n");
        }
    } while ($mysqli->next_result());
}

/* close connection */
$mysqli->close();
?>

我得到的错误:

严格标准: mysqli::next_result():没有下一个结果集。 请打电话mysqli_more_results()/mysqli::more_results()去检查 是否调用这个函数/方法address在线的电话号码

我在网上搜索了一个解决方案,特别是在 StackOverflow 上,但我没有找到有用的解决方案。我发现的大多数解决方案都是这两个之一:

  • In 这个解决方案,@哈默里特说要改变循环do-while to while。这说明php.net的代码逻辑有问题,我觉得很难相信。但更重要的是,它对我不起作用。
  • In 这个解决方案, @米克马库萨建议在其中添加一个条件while并改变$mysqli->next_result() to $mysqli->next_result() && $mysqli->more_results(),但是这个解决方案效果不太好。它确实消除了错误,但忽略了最后的结果。

尝试一下

} while ($mysqli->more_results() && $mysqli->next_result());

sscce:

<?php
ini_set('display_errors', 'on');
error_reporting(E_ALL|E_STRICT);

$mysqli = new mysqli("localhost", "localonly", "localonly", "test");
/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

$mysqli->query('CREATE TEMPORARY TABLE City (ID int auto_increment, `Name` varchar(32), primary key(ID))') or die($mysqli->error);

$stmt = $mysqli->prepare("INSERT INTO City (`Name`) VALUES (?)") or die($mysqli->error);
$stmt->bind_param('s', $city) or die($stmt->error);
foreach(range('A','Z') as $c) {
    $city = 'city'.$c;
    $stmt->execute() or die($stmt->error);
}

$query  = "SELECT CURRENT_USER();";
$query .= "SELECT Name FROM City ORDER BY ID LIMIT 20, 5";

/* execute multi query */
if (!$mysqli->multi_query($query)) {
    trigger_error('multi_query failed: '.$mysqli->error, E_USER_ERROR);
}
else {
    do {
        /* store first result set */
        if ($result = $mysqli->store_result()) {
            while ($row = $result->fetch_row()) {
                printf("'%s'\n", $row[0]);
            }
            $result->free();
        }
        /* print divider */
        if ($mysqli->more_results()) {
            printf("-----------------\n");
        }
    } while ($mysqli->more_results() && $mysqli->next_result());
}

prints

'localonly@localhost'
-----------------
'cityU'
'cityV'
'cityW'
'cityX'
'cityY'

没有警告/通知。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么会出现这个 PHP 错误:“严格标准:mysqli::next_result():没有下一个结果集。”? 的相关文章

随机推荐

  • 云数据存储:避免竞争条件的方法

    我有很多操纵同类实体的观点 def view1 request key user ndb Key urlsafe key get user x 1 user put def view2 request key user ndb Key ur
  • 在 ASP.NET MVC 3 应用程序的类库中引用 Ninject

    我有一个 ASP NET MVC 3 应用程序 它使用 Ninject MVC3 扩展在我的 MVC 应用程序中设置 DI 也就是说 有NinjectMVC3 cs文件在App Start定义我的绑定的文件夹 这对于 DI 到我的应用程序的
  • 如何获取组合框的显示文本而不是别名?

    我有一个带有一些显示值和别名的组合框 在 SSJS 中 当我这样做时 getComponent comboboxName getValue 它返回别名值 这很好 但现在我想要组合框的显示文本而不是别名值 有什么方法可以得到它吗 定义 SSJ
  • Python 回文

    所以我的任务是查看并检查正整数是否是回文 我已经正确完成了所有工作 但在最后的部分需要帮助 从用户给出的回文中生成一个新的回文的任务 我的 while 循环走在正确的轨道上还是应该使用其他东西 所以结果是如果你输入 192 它会返回Gene
  • 修复正则表达式以解决 ICU/RegexKitLite 错误

    我正在使用 RegexKitLite 它又使用 ICU 作为其引擎 尽管有文档 但在搜索 xxxxxxxxxx 时 像 x 这样的正则表达式将匹配空字符串 它的行为应该像 x 一样 我想在存在此错误时绕过它 并且当正则表达式匹配返回 0 长
  • 生成所有 Excel 单元格公式的平面列表

    我有一个用 VBA 和单元格公式编写的大型程序 我的任务是将其逆向工程到 C winforms 中 我想首先 我需要在平面列表中查看所有单元格公式 有现有的方法可以做到吗 提前致谢 编辑 只是为了分享 在回答者的帮助下 我设法想出了这个 在
  • 如何在 Angular 中使用 ngFor 循环对象属性

    这篇文章是关于我在工作中发现的一个有趣的问题 如果你还不知道的话 我说的是 Angular 2 问题 因此 您想要显示列表的标记 该列表的值来自后端 由于某种原因 您收到的不是一个好的旧对象数组 如下所示 car color red mod
  • 通过在 numpy 中设置一些标准来检索元素的位置

    对于给定的二维数据数组 如何检索粗体中 7 和 11 的位置 索引 因为只有它们是邻居中被相同值包围的元素 import numpy as np data np array 0 1 2 3 4 7 6 7 8 9 10 3 3 3 4 7
  • 如何使用正则表达式前瞻并匹配先前的字符串/字符类

    如果某个数字不位于某个数字之前 则尝试使用负向前瞻来匹配该数字 sign d 8989 匹配898 但不匹配9 我希望它与 8989 整体匹配 是否可以使用负向前瞻来匹配整个字符类或更复杂的正则表达式 d d d 1 2 这将匹配不在 a
  • 根据键对数组进行排序

    我有一个像这样的数组 Array 0 gt Array title gt some title time gt 1279231500 1 gt Array title gt some title 2 time gt 1279231440 2
  • 你能强制IE8识别background-size: 100%吗?

    我需要背景图像精灵根据其容器的宽度调整大小 而不显示整个精灵 并且 background size 100 可以完成此操作 如下所示 featured ul icon controls li prevention background ur
  • 关于例外的问题

    我只是在视觉工作室中玩弄异常 并且使用上面的代码 我期望因为我的异常规范没有提到任何应该抛出 bad exception 的内容 但实际发生的情况是异常被适当的处理程序捕获 为什么这样 我是否缺少 IDE 中的某些设置或其他内容 当我陷入上
  • 从 base64String 加载 bitmapImage

    我怎样才能加载一个bitmapImage from base64String in windows 8 我尝试过这个 但没有成功 它曾经在 Windows Phone 上运行 有什么不同吗 看来我必须使用函数setsourceasync 当
  • 堆空间内存不足

    我的应用程序当前消耗大量内存 因为它正在运行物理模拟 问题是 在第 51 次模拟时 Java 通常会因为堆空间内存不足而抛出错误 我的程序最终运行了数千次模拟 无论如何 我不仅可以增加堆空间 还可以修改我的程序 以便每次运行后都会清除堆空间
  • 在 Bash 中将多个文本文件连接成一个文件

    将目录中的所有 txt 文件合并为一个大文本文件的最快 最实用的方法是什么 目前我正在使用带有 cygwin 的 Windows 因此我可以访问 BASH Windows shell 命令也不错 但我怀疑是否有这样一个命令 这会将输出附加到
  • strftime 不返回缩写时区

    谁能告诉我为什么时区返回为 山区夏令时间 而不是 MST import time print time strftime H M A Z d b y 根据您提出的另一个问题 我猜测您正在使用 Windows 在 Windows 上 strf
  • 如何在map-reduce中读取多个图像文件作为hdfs的输入?

    private static String testFiles new String img01 JPG img02 JPG img03 JPG img04 JPG img06 JPG img07 JPG img05 JPG private
  • 快速从文档目录获取图像

    假设我使用此代码将图像保存到文档目录 let nsDocumentDirectory NSSearchPathDirectory DocumentDirectory let nsUserDomainMask NSSearchPathDoma
  • 通过 Github API 从 Github 存储库获取所有文件名

    是否可以使用 GitHub API 从存储库获取所有文件名 我目前正在尝试使用这个来修补这个PyGithub 但只要它有效 我完全可以手动执行请求 到目前为止我的算法是 获取用户存储库名称 获取符合特定描述的用户仓库 获取存储库文件名 您可
  • 为什么会出现这个 PHP 错误:“严格标准:mysqli::next_result():没有下一个结果集。”?

    我有代码 它基本上是一个副本php net的代码 但由于某种原因它不起作用 这是 php net 上的代码