我正在构建一个应用程序来存储数据库中的“得分”,我希望能够告诉人们他们的排名。
所以现在,我有我的选择查询,它抓取所有数据库行并按分数降序排序,因此得分从最高到最低。
现在我想要的是能够向每个用户显示他们的个人排名...所以如果Jim在该列表中排名第33,它将在他的工作站上显示他的排名是33 ......
那么我怎样才能得到Jim在结果集中出现的行号? (它们按唯一的员工ID排序......但我认为你明白了这一点)
因此,如果Jim登录,他可以看到类似的东西:你有670分,你的等级是33。
我在MySQL上使用PDO。
我希望这种描述有意义。
答案 0 :(得分: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;
}
输出将采用以下格式,在这种情况下,我们的Users表中只有2个用户,按降序ID排序:
鲍勃的排名为3 乔的等级为2 皮特的排名为1如果在mysql查询中将DESC更改为ASC,则输出将为:
皮特的等级为1 乔的等级为2 皮特的排名为3