2013-08-18 59 views
0

我有一個球員名單。球員按積分排序。我想知道的是如何獲得某個特定玩家的排名數字?如何獲得特定玩家的排名?

這是到目前爲止我的代碼(不工作,因爲它似乎有一些錯誤):

$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 

請幫忙嗎?

+0

什麼錯誤? – putvande

+0

可能重複的[mysql \ _fetch \ _array()期望參數1是資源,布爾給出在選擇](http://stackoverflow.com/questions/2973202/mysql-fetch-array-expects-parameter-1-to -be-resource-boolean-given-in-select) – putvande

回答

1
$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'" 
); 
+0

真棒!!!!這就像一個魅力!非常感謝您節省了我的一天!:D – drpelz

+0

@drpelz沒問題的人:) – federicot

1

用戶是關鍵詞,因此使用user來檢查參數是否相等。 另外,mysql_query一次只能執行1個查詢。

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."' 
+0

嗯。我總是得到相同的錯誤信息(當我嘗試使用它時,在我的文章中見上文)。 – drpelz

+0

錯誤信息消失了(這也適用)!非常感謝您的幫助!:D – drpelz