2013-08-31 81 views
2

我正在構建一個應用程序來將「分數」存儲在數據庫中,我希望能夠告訴人們他們是如何排名的。結果中的PDO MySQL行位置

所以現在,我有了我的選擇查詢來抓取所有數據庫行並按照得分降序排列它們,所以分數從高到低排序。

現在我想要的是能夠向每個用戶顯示他們的個人等級......所以如果吉姆在該名單中排名第33,它會在他的工作站上向他顯示他的等級是33 ...

那麼我怎樣才能得到結果集中吉姆所在的行號呢? (它們是由獨特的員工ID的分類......但我想你明白了吧)

所以,如果吉姆登錄他能看到這樣的:你有670點,你的排名是33

我使用PDO在MySQL上。

我希望說明有道理。

+0

當您循環查詢結果時,請保留一個'$ count'變量來增加每一行。這將給你的排名,因爲它將在第33循環 –

+0

可能重複[獲取用戶排名與MySQL](http://stackoverflow.com/questions/10363388/get-user-rank-with-mysql) – hjpotter92

回答

0

我的例子是庫MySQLi,但邏輯是PDO同/ MySQL的

假設$ con是你的數據庫連接變量:

$All_Users = $con->query("SELECT * FROM Users ORDER BY Score DESC"); // Get all users and order by descending order. 

    $rank = 0; 
     while($UserInfo = $All_Users->fetch_object()) { 
      $rank++; 
      echo $UserInfo->Username."has a rank of". $rank; 
     } 

輸出將在下面的格式,這種情況下,我們只有2在我們的用戶表的用戶,按降序排列ID:

Bob有3
喬的等級有2個
皮特的排名有AR 1

ANK如果更改DESC在MySQL查詢ASC,輸出將是:

皮特有1
喬的等級有2個
皮特的排名有3