PHP:如果我在调用结果存储过程后再次使用 mysqli::query(),则“命令不同步”

标签 php stored-procedures mysqli

我的数据库中有一个存储过程,它返回一个表中的所有记录:

CREATE PROCEDURE showAll()
BEGIN
    SELECT * FROM myTable;
END

SP 按预期工作。但是,如果我在 php 脚本中调用它,然后再次尝试查询数据库,它总是会失败:

// $mysqli is a db connection

// first query:

if (!$t = $mysqli->query("call showAll()"))
    die('Error in the 1st query');

while ($r = $t->fetch_row()) {
    echo $r[0] . "<br>"; // this is ok
}

$t->free(); // EDIT (this doesn't help anyway)

// second query (does the same thing):

if (!$t = $mysqli->query("SELECT * from myTable"))
    die('Error in the 2nd query'); // I always get this error

while ($r = $t->fetch_row()) {
    echo $r[0] . "<br>";
}

值得注意的是,如果我交换两个查询(即我在最后调用存储过程),它可以正常工作而不会出现任何错误。在第二个查询之前关闭()结果无济于事。 一些提示?

编辑:mysqli::error() 是:«命令不同步;您现在无法运行此命令»。

最佳答案

mysqli.query 的 php.net/manual 条目上的评论已更新,现在包括对此的回答。总结一下,在 $t->close() 之后调用 $mysqli->next_result()。感谢 petrus.jvr!

链接:http://www.php.net/manual/en/mysqli.query.php#102904

关于PHP:如果我在调用结果存储过程后再次使用 mysqli::query(),则“命令不同步”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4997601/

相关文章:

php - 永久删除 symfony 插件

php - NGROK 不断将 url 从 CUSTOM_URL 更改为 localhost

php - 使用 PDO 和 PHP 将表单中的数据插入 MySQL 数据库

php - 帮助 MVC 应用程序中的依赖注入(inject)

sql - 在 SQL Server 中的 INSERT INTO SELECT 查询中的字段中添加增量数字

php - 选择值等于变量 MySQL 的数据

java - 使用 EclipseLink 使用复杂对象类型参数调用 Oracle 中的存储过程

sql-server - SQL Server 2012 scope_identity 建议

php - 如何选择多个复选框并保存到我的数据库中

php - 使用动态数量的 LIKE 条件构建 SELECT 查询作为 mysqli 准备语句