【发布时间】: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;
}
【问题讨论】:
-
你检查过文档吗?特别是this comment?我认为您应该在每次请求数据库后清除结果队列。
-
确保您已清除结果队列。 php.net/manual/en/mysqli.multi-query.php#110155
标签: php mysql mysqli mysqli-multi-query