我想通过使用$ 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()