Php 排名查询不起作用

Php 排名查询不起作用,php,mysql,codeigniter,Php,Mysql,Codeigniter,我已经研究了关于如何进行计数和排名的各种SO问题。我的数据库中有一个名为vdestation的字段,我想获得每个目的地的计数和排名。我正在使用Codeigniter。我有以下资料: $sql = ("SET @curRank := 0;\r\n SELECT vDestination, COUNT(*) AS count, @curRank := @curRank + 1 AS rank FROM tbl_user_trip ORDER BY vDestinat

我已经研究了关于如何进行计数和排名的各种SO问题。我的数据库中有一个名为vdestation的字段,我想获得每个目的地的计数和排名。我正在使用Codeigniter。我有以下资料:

$sql = ("SET @curRank := 0;\r\n
            SELECT vDestination, COUNT(*) AS count, @curRank := @curRank + 1 AS rank FROM tbl_user_trip ORDER BY vDestination");
在我看来,这看起来像是有效的SQL语法,但我不断收到数据库错误。有人能告诉我这个问题出了什么问题吗

发生数据库错误
错误号码:1064

您的SQL语法有错误;查看与MySQL服务器版本对应的手册,了解第3行“选择VDestation,COUNT(*)作为COUNT,@curRank:=@curRank+1作为tb的秩”附近使用的正确语法

SET @curRank := 0;
SELECT vDestination, COUNT(*) AS count, @curRank := @curRank + 1 AS rank
FROM tbl_user_trip ORDER BY vDestination
这就是我遇到的错误。

尝试以下方法:

 $this->db->query("SET @curRank := 0");
 $this->db->query("SELECT vDestination, COUNT(*) AS count, @curRank := @curRank + 1 AS rank FROM tbl_user_trip ORDER BY vDestination");
试着这样做:

 $this->db->query("SET @curRank := 0");
 $this->db->query("SELECT vDestination, COUNT(*) AS count, @curRank := @curRank + 1 AS rank FROM tbl_user_trip ORDER BY vDestination");

工作解决办法如下:

function getMostPopularDestinations()
    {
        $this->db->query("SET @curRank := 0");
        $query = $this->db->query("SELECT vDestination, COUNT(*) AS count, @curRank := @curRank + 1 AS rank FROM tbl_user_trip GROUP BY vDestination ORDER BY vDestination");
        return $query->result_array();
    }

正如@tyro所建议的,但也有一个小组成员。

工作解决方案如下:

function getMostPopularDestinations()
    {
        $this->db->query("SET @curRank := 0");
        $query = $this->db->query("SELECT vDestination, COUNT(*) AS count, @curRank := @curRank + 1 AS rank FROM tbl_user_trip GROUP BY vDestination ORDER BY vDestination");
        return $query->result_array();
    }

正如@tyro所建议的那样,但也有一个小组成员。

您遇到了哪些数据库错误。请在您的问题中包括请参阅更新的问题。您遇到了哪些数据库错误。请在您的问题中包括请参阅更新的问题。@Michael Nares遗漏了该部分。“我专注于解决这个问题。”迈克尔·奈尔斯(Michael Nares)错过了这一部分。我专注于解决这个问题。