【问题标题】:I got one error"Commands out of sync; you can't run this command now" when I using mysqli_multi_query当我使用 mysqli_multi_query 时出现一个错误“命令不同步;您现在无法运行此命令”
【发布时间】:2018-03-01 07:31:32
【问题描述】:

我想通过使用 $mysqli->multi_query($sql); 来执行两个更新 sql;但我只是在下面得到这个错误信息:

PHP 消息:UPDATE table1 SET status=1;UPDATE table2 SET name='b'|命令不同步;您现在无法运行此命令”而 从上游读取响应头,

当我在 phpmyadmin 中手动运行查询字符串时,一切正常。

这是我的代码:

$mysqli = new MySQLi(DB_HOST,DB_USER,DB_PASSWORD,DB_DATABASE);
$mysqli->query("set names utf8");
$sql = "UPDATE table1 SET status=1;UPDATE table2 SET name='b";

if ($mysqli->multi_query($sql))  
{  
  do {  

    $mysqli->use_result();

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

} else {
    error_log($sql."|".mysqli_error($mysqli));
    return false;
}

我的代码有问题吗?

=================================
我已经使用以下代码解决了我的问题:

$mysqli = new MySQLi(DB_HOST,DB_USER,DB_PASSWORD,DB_DATABASE);
$mysqli->query("set names utf8");
$sql = "UPDATE table1 SET status=1;UPDATE table2 SET name='b";

if ($mysqli->multi_query($sql))  
{  
  do {  

    $res = $mysqli->use_result();  
    mysqli_free_result($res);

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

} else {
    error_log($sql."|".mysqli_error($mysqli));
    return false;
}

【问题讨论】:

标签: php mysql mysqli mysqli-multi-query


【解决方案1】:

不想使用 $mysqli->multi_query() 执行两个更新 sql

分别执行它们,使用 mysqli::query()

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = new MySQLi(DB_HOST,DB_USER,DB_PASSWORD,DB_DATABASE);
$mysqli->set_charset("utf8");

$mysqli->query("UPDATE table1 SET status=1");
$mysqli->query("UPDATE table2 SET name='b");

就这么简单

注意,如果这些查询不是静态的而是接受变量,那么你必须使用prepare()/execute()而不是query()

【讨论】:

  • 我认为我必须使用$mysqli->multi_query(),因为我必须确保两个更新能够同时正确执行
猜你喜欢
  • 2012-12-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-29
  • 2015-12-21
  • 2012-07-19
  • 1970-01-01
  • 2012-09-26
  • 1970-01-01
相关资源
最近更新 更多