gpt4 book ai didi

php - 计算达到某个查询需要多少行

转载 作者:行者123 更新时间:2023-11-29 22:51:23 24 4
gpt4 key购买 nike

我有一个非常简单的查询,

$query3 = $db->query("SELECT * FROM mybb_ranks WHERE id='1' ORDER by points DESC");

它将返回一个注册和排名人员的数据库。由于玩家积分可能会因比赛而随机变化,因此我们通过在以如下方式获取值后分配它来确定排名:

$i = 1;
while($row = mysqli_fetch_array($query5))

{
echo "$row[player]'s rank is $i";
$i++;

}

正如您所看到的,它按玩家的分数对玩家进行排序,但根据显示每个排名后添加的变量来确定排名#。但是,在每个用户个人资料中,我也想显示他们的排名。这有点困难,因为我需要某种方法来计算查询必须经过的行数才能到达某个玩家。例如,如果 PlayerB 排名第 5,我需要一种方法在他自己的个人资料上显示这一点。为此,我想需要更改查询,以便能够在到达第 5 行的某个玩家之前对每个单独的行(4 行)进行计数。我想知道,我该怎么办?

最佳答案

试试这个:

UPDATE mybb_ranks 
LEFT JOIN (
SELECT
player,
@rank:=@rank+1 as current_rank
FROM mybb_ranks
WHERE id='1'
ORDER BY points DESC
) AS t
ON mybb_ranks.player = t.player
SET mybb_ranks.rank = t.current_rank

这意味着您必须在 mybb_ranks 表中创建额外的列 rank

每次您生成排名列表时,此查询都会更新用户的排名

因此,当您需要在用户的个人资料页面中显示用户的排名时,您只需从表中请求即可:

SELECT rank 
FROM mybb_ranks
WHERE player = :player_id

如果您希望它更加动态,您可以在每次生成玩家个人资料页面时运行此更新查询,就在SELECT排名之前。

关于php - 计算达到某个查询需要多少行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28888703/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com