【问题标题】:mysqli_multi_query command out of sync error - not inserting into DBmysqli_multi_query 命令不同步错误 - 未插入数据库
【发布时间】: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 - 你真的应该使用准备好的语句和绑定变量,否则你可能会被黑客入侵/有人一旦发现就会破坏你的网站)

标签: php mysql


【解决方案1】:

更新为

// 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));

您必须使用 mysqli_next_result 遍历结果以获取每个查询的结果。

点击这里了解更多关于错误Commands out of sync的信息

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-28
    • 2019-12-05
    • 1970-01-01
    • 2020-07-29
    • 1970-01-01
    • 2013-01-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多