【问题标题】:MySQL Error: Commands out of sync; you can't run this command now [duplicate]MySQL 错误:命令不同步;您现在无法运行此命令[重复]
【发布时间】:2013-08-29 00:40:30
【问题描述】:

MySQL 错误:命令不同步;你现在不能运行这个命令

当我每次尝试多次执行 SQL 过程时,都会出现上述错误。

我发现它与“商店结果”有关,所以我一直试图弄清楚它,但我还没有成功。

这是我的 PHP 代码:

$query = "CALL GetObjectsValue(".$FormID.")";

if( $res = $mysqli->query($query) )
{
    $mysqli->store_result();

    while ($row = $res->fetch_assoc()) 
    {

        ...

    }
    $res->free();
}

【问题讨论】:

标签: php mysql mysqli


【解决方案1】:

出于某种原因,对于存储过程中的记录集,必须使用 next_result() 命令循环遍历它。如果记录集直接通过执行 SQL 查询 (SELECT) 获得,则情况并非如此。

$query="CALL GetObjectsValue($FormID)";
if($res=$mysqli->query($query))
{
  do
  {
    $row = $res->fetch_assoc()
    ...
  }
  while($mysqli->next_result()); //loop through recordset

  $res->free();
}

【讨论】:

    【解决方案2】:

    改变

    $query = "CALL GetObjectsValue(".$FormID.")";     
    

    $query = "CALL GetObjectsValue("$FormID")";  
    

    注意$FormID 没有点。

    【讨论】:

    • 点是 PHP 中的字符串连接——它们是必要的
    • 您的示例将导致语法错误,因为点是连接运算符
    猜你喜欢
    • 2019-07-04
    • 1970-01-01
    • 2012-07-19
    • 2012-12-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-13
    • 2012-09-26
    • 1970-01-01
    相关资源
    最近更新 更多