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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我收到一个错误“命令不同步;当我使用mysqli_multi_query时,你现在无法运行此命令相关的知识,希望对你有一定的参考价值。

我想通过使用$ 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;
}
答案

你不想使用$ 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时,你现在无法运行此命令的主要内容,如果未能解决你的问题,请参考以下文章

为啥我收到的 jwt 格式错误?

我想在进行更新查询时选择一个表,但我收到错误代码 1093

我收到一个警告错误的 js fiddle 配置

Webpack 5 收到 Polyfill 错误?!?!我的 JavaScript React 项目在尝试编译我的 webpack.config.js 文件时收到一个 polyfill 错误

我收到错误:致命错误:索引超出范围

为啥我收到一个错误,显示模块“多处理”没有属性“sharedctypes”?