运行多个查询时,如何解决“命令不同步”错误?

时间:2018-10-17 14:15:35

标签: php mysqli

我收到此错误:

  

命令不同步;您现在不能运行此命令

这是我的代码:

$sql_moneyboxs = "SELECT SUM(Amount) AS inflow
        FROM payment_details WHERE DATE(created)='$todayDate' and paymentMode='cash' GROUP BY DATE(created)";   

$sql_moneyboxs .= "SELECT SUM(Amount) AS inflow
        FROM payment_details WHERE DATE(created)='$todayDate' and paymentMode='card' GROUP BY DATE(created)";

if(mysqli_multi_query($link,$sql_moneyboxs)){
    do{
        if($result=mysqli_store_result($link)){ // ignore if no record set
            while($row=mysqli_fetch_array($result)){

                    echo $row['inflow'];
            }
            mysqli_free_result($result);
        }
    } while(mysqli_more_results($link) && mysqli_next_result($link));
}
if($error_mess=mysqli_error($link)){
    echo $error_mess; // here is the problem
}

1 个答案:

答案 0 :(得分:0)

首先,通过phpMyAdmin或mysql-workbench等运行时,SQL语句之间必须使用分号;。这可能会解决您的错误消息。

但是....

由于两个查询之间唯一的区别是paymentMode列的值,为什么不使用UNION或通过SQL以其他方式处理它呢?这样,您将拥有一个SQL命令,您将拥有一组要循环执行的结果,等等。