gpt4 book ai didi

php - 存储过程在与 fetch_all 一起使用时导致 mysqli 出现问题

转载 作者:搜寻专家 更新时间:2023-10-31 22:13:13 24 4
gpt4 key购买 nike

我已将此问题分解为本质,但仍有问题。

当我尝试使用 fetch_all 获取存储过程的结果时,我得到的结果按预期返回到数组,但随后的 mysqli 调用抛出“命令不同步”错误。

我什至尝试将我的存储过程简化为...

CREATE PROCEDURE testp()
BEGIN
SELECT * FROM tbl
END

我把表格变小了,10 行 3 列。

我使用以下 PHP

$query = "CALL testp()";
$result = $db->query($query);
$rows = $result->fetch_all(MYSQL_ASSOC);
$result->free();
print_r($rows);
$query = "SELECT * FROM tbl WHERE id = ?";
$stmt = $this->db->prepare($query);
echo $this->db->error;
$stmt->close();

Echo 的“命令不同步;您现在无法运行此命令”并抛出 fatal error :在非对象上调用成员函数 close()

$rows 按预期输出

有什么想法吗?

最佳答案

老实说,这实际上是 mysqli 的工作方式!事情以 2 批发生,这意味着您需要在执行任何其他操作之前清除最后的结果。如果你不这样做 -> 错误!

您可以使用next_result() 实现,示例如下:

while($this->_mysqli->next_result());

..然后成功地继续你的代码。上面的示例适合在返回数组之前运行 fetch_assoc_ 进程之后。

(我知道这是 3 个月前被问到的,但迟到总比没有问到;)

关于php - 存储过程在与 fetch_all 一起使用时导致 mysqli 出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10150951/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com