繁体   English   中英

当我使用 mysqli_multi_query 时,出现一个错误“命令不同步;您现在无法运行此命令”

[英]I got one error"Commands out of sync; you can't run this command now" when I using mysqli_multi_query

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

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

当我在 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;
}

不想使用 $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()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM