1

我有一个球员名单。球员按分数排序。我想知道的是如何获得某些玩家的排名数字?

到目前为止,这是我的代码(它不起作用,因为它似乎有一些错误):

$rank = mysql_query (SET @rank := 0;
SELECT *, @rank := @rank + 1
FROM ava_users
WHERE id = '".$id."'
ORDER BY points DESC);

$rank_res = mysql_fetch_array($rank);

当我尝试使用我的查询时,我收到一条错误消息:

mysql_fetch_array() expects parameter 1 to be resource, boolean given in     /Users/***/Documents/Arcades/Arc_development/arc_projects/***/arc_dev_website/arc_offline/includes/profile/profile_main.inc.php
4

3 回答 3

2
$rank = mysql_query (
    "SELECT a.*, 
            (
            SELECT  COUNT(1)
            FROM    ava_users b
            WHERE   (b.points, b.id) >= (a.points, a.id)
            ) AS rank
    FROM    ava_users a
    WHERE   a.`user` = '$id'"
);
于 2013-08-18T19:51:08.750 回答
1

user 是关键字,因此用于user检查参数是否相等。此外,mysql_query 一次只能执行 1 个查询。

于 2013-08-18T19:44:35.420 回答
1

尝试这个:

SELECT `user`, rank
FROM (
  SELECT `user`, ( @rank := @rank + 1 ) as rank
  FROM ava_users, ( select (@rank := 0 ) ) rnk
  ORDER BY points DESC
) ranks
WHERE `user` = '".$id."'
于 2013-08-18T19:48:48.567 回答