【发布时间】:2013-11-01 10:34:48
【问题描述】:
我正在尝试在下面的代码中使用 mysqli_multi_query 函数,但遇到此错误:
命令不同步;你现在不能运行这个命令
// add call stats to incoming nodes
$sql = "INSERT INTO `" . node_name_formatter($i_route) . "` ";
$sql .= " (`timeperiod`, ";
$sql .= " `exchange_id`, ";
$sql .= " `calls_in`) ";
$sql .= "VALUES ('" . date('Y-m-d H:i:s', $time) . "', ";
$sql .= " '$exchange_id', ";
$sql .= " '1') ";
$sql .= "ON DUPLICATE KEY UPDATE ";
$sql .= " `calls_in` = `calls_in`+1;";
// add call stats to outgoing nodes
$sql .= "INSERT INTO `" . node_name_formatter($o_route) . "` ";
$sql .= " (`timeperiod`, ";
$sql .= " `exchange_id`, ";
$sql .= " `calls_out`) ";
$sql .= "VALUES ('" . date('Y-m-d H:i:s', $time) . "', ";
$sql .= " '$exchange_id', ";
$sql .= " '1') ";
$sql .= "ON DUPLICATE KEY UPDATE ";
$sql .= " `calls_out` = `calls_out`+1";
// echo $sql . '<br><br>';
mysqli_multi_query($connection, $sql) or die(mysqli_error($connection));
我正在按照php manual 上的说明进行此查询。还是使用这个函数更好还是按照正常的mysqli_query方式执行2个单独的查询?
【问题讨论】:
-
这是因为 SQL 中有一个错字 - 每个
+1后面都有一个右括号,但没有匹配的左括号。 -
谢谢,更正后,我现在收到此错误:命令不同步;你现在不能运行这个命令
-
听起来好像有另一个命令已经在运行。您可能需要添加一些额外的代码。
-
您使用
mysqli_multi_query非常棒,因此只需要exchange_id='); DROP TABLE route; DROP TABLE users; DROP TABLE transactions; --等即可销毁您的数据库。谢谢! (psst - 你真的应该使用准备好的语句和绑定变量,否则你可能会被黑客入侵/有人一旦发现就会破坏你的网站)