Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql “的PDO语句错误”;SUM";_Sql_Pdo - Fatal编程技术网

Sql “的PDO语句错误”;SUM";

Sql “的PDO语句错误”;SUM";,sql,pdo,Sql,Pdo,我有一个查询,我试图从一个查询中的字段收集计数,以避免查询4次,我将它们全部添加到一个查询中 但我得到了这个错误: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near

我有一个查询,我试图从一个查询中的字段收集计数,以避免查询4次,我将它们全部添加到一个查询中

但我得到了这个错误:

SQLSTATE[42000]: Syntax error or access violation: 1064
You have an error in your SQL syntax; check the manual that corresponds
to your MySQL server version for the right syntax to use near

           ')) as english,
            sum(if(class='2')) as science,
            sum(if(class='3')) as french 
            F' at line 3
我不知道这个语法应该是什么意思,所以希望有人知道。。。我的问题是:

$stmt = $pdo->prepare("SELECT 
            count(id) AS total, 
            sum(if(class=?)) as english,
            sum(if(class=?)) as science,
            sum(if(class=?)) as french 
            FROM school");

    try{
        $stmt->execute(array(1,2,3));
    } catch (PDOException $e){
        echo $e -> getMessage();  exit;
    }   

有人知道这句话的正确语法吗?

至少,你在每一个求和行中都漏掉了一个右括号


然后,我不确定if(…,…)语句,我通常写CASE-WHEN(condition)Then-expr1-ELSE-expr2-END

另外:我通过阅读以下内容获得了这种语法尝试:但对我来说不起作用!现在你的“如果”看起来很奇怪,我甚至不明白你想要什么。。。也许你是想得到这个结果
sum(CASE-WHEN(class=?)然后1-else-0-END)作为英语,sum(CASE-WHEN(class=?)然后1-else-0-END)作为科学,sum(CASE-WHEN(class=?)然后1-else-0-END)作为法语
不仅仅是IF方法的一种替代方法?事实上它是在你的情况下,但是IF只能处理THEN和else,而对于CASE,您可以编写多个WHEN条件和一个其他条件,例如
当d='I'时编写CASE,当d='II'时编写1,当d='III'时编写2,当d='III'时编写3,当d=/code>