子查询在php上不起作用

子查询在php上不起作用,php,mysql,sql,Php,Mysql,Sql,我有一张桌子。我需要在我的查询中计算一些字段。这是我的疑问: select COUNT(q1) as 'result' from (select DISTINCT id_qs as 'q1' FROM main where id_exam=40) as q2 这是一项完美的工作。但是当我将其放入php代码中时: function HowManyQuestion($id) { mysql_connect($this->hostname,$this->use

我有一张桌子。我需要在我的查询中计算一些字段。这是我的疑问:

select COUNT(q1) as 'result'
from (select DISTINCT id_qs as 'q1' FROM main where id_exam=40) as q2
这是一项完美的工作。但是当我将其放入php代码中时:

   function HowManyQuestion($id)
   {
        mysql_connect($this->hostname,$this->username,$this->password) OR DIE("Can't connect");
        mysql_select_db($this->dbName) or die(mysql_error());
        $query = "select COUNT(q1) as 'result' from (select DISTINCT id_qs as 'q1' FROM main where id_exam=40) as q2;";
        $res = mysql_query($query) or die(mysql_error());
        $id=0;
        while ($row=mysql_fetch_array($res)) {
            $id=$row['result'];
            break;
        }
        return $id;

   }
结果我有一个错误:

您的SQL语法有错误;检查与MySQL服务器版本相对应的手册,以获取第1行中使用的正确语法


那么如何解决这个问题呢?

实际上,您可以简化查询而不使用子查询,我认为这将消除错误

SELECT COUNT(DISTINCT id_qs) totalCount
FROM main
WHERE id_exam = 40

实际上,您可以简化查询而不使用子查询,我认为这将消除错误

SELECT COUNT(DISTINCT id_qs) totalCount
FROM main
WHERE id_exam = 40

别名列名不能用于进一步处理

            select COUNT(id_qs) as 'result'
                   from (select DISTINCT id_qs as 'q1' FROM main where id_exam=40) as q2

别名列名不能用于进一步处理

            select COUNT(id_qs) as 'result'
                   from (select DISTINCT id_qs as 'q1' FROM main where id_exam=40) as q2

删除
在查询的末尾。-><代码>作为q2“
此外,
mysql*
函数已被取消权限。请改用mysqli或PDO。有关详细信息,请阅读此内容:删除查询末尾的
。->
作为q2”此外,
mysql.*
函数被取消分级。改用mysqli或PDO。阅读此文了解更多信息:只要他不使用分号,可能会:)+1只要他不使用分号,可能会:)+1