Php 获取特定条目的行号
我有一个叫做排行榜的表格,有两列,PlayerName和PlayerRating。我希望能够访问一个特定的玩家名称,获得他们的游戏规则,以及他们的排名(例如:他们是第一、第二、第十吗?)。我读了一些书,确实找到了一种方法,但我似乎无法将其转换为PHP并实际打印出值。请记住,我对MySQLi或PHP不是很有经验 我目前正在通过以下方式获得我的PlayerRating:Php 获取特定条目的行号,php,mysql,Php,Mysql,我有一个叫做排行榜的表格,有两列,PlayerName和PlayerRating。我希望能够访问一个特定的玩家名称,获得他们的游戏规则,以及他们的排名(例如:他们是第一、第二、第十吗?)。我读了一些书,确实找到了一种方法,但我似乎无法将其转换为PHP并实际打印出值。请记住,我对MySQLi或PHP不是很有经验 我目前正在通过以下方式获得我的PlayerRating: $CurrentRating = $Connection->query("SELECT CurrentRating FROM
$CurrentRating = $Connection->query("SELECT CurrentRating FROM Leaderboard WHERE PlayerName='$PlayerName'")->fetch_assoc()["CurrentRating"];
我只能回显$CurrentRating代码>和工作完成。现在,为了找到PlayerRank,我找到了几个帖子,解释了我的查询应该如何进行
SET @rank=0; SELECT @rank:=@rank+1 As rank
因此,我认为开始是:
query("SET @rank=0; SELECT @rank:=@rank+1 As rank, CurrentRating FROM Leaderboard [...]
但我似乎无法让它正常工作,也无法获得适当的排名。我尝试回显了$CurrentRating[“rank”]
和以下几个变体:
$CurrentRank = $Connection->query("SET @rank=0; SELECT @rank:=@rank+1 As rank, SELECT CurrentRating FROM Leaderboard WHERE PlayerName='$PlayerName'")->fetch_assoc()["rank"];
有人能帮我把这个写对吗?
提前谢谢
SELECT COUNT(*) FROM Leaderboard WHERE CurrentRating > ?
对于用户来说,电流额定值作为一个参数应该已经足够了
对于用户,当前评级作为一个参数应该差不多足够了当您希望根据当前评级进行排名时,您的查询应该是这样的
查询
SELECT
Leaderboard.PlayerName
, Leaderboard.PlayerRating
, (@rank := @rank + 1) AS rank
FROM
Leaderboard
CROSS JOIN(
SELECT
@rank := 0
)
AS
init_user_variable
ORDER BY
Leaderboard.CurrentRating DESC
SELECT
Leaderboard_ranked.PlayerName
, Leaderboard_ranked.PlayerRating
, Leaderboard_ranked.rank
FROM (
SELECT
Leaderboard.PlayerName
, Leaderboard.PlayerRating
, (@rank := @rank + 1) AS rank
FROM
Leaderboard
CROSS JOIN(
SELECT
@rank := 0
)
AS
init_user_variable
ORDER BY
Leaderboard.CurrentRating DESC
)
AS
Leaderboard_ranked
WHERE
Leaderboard_ranked.PlayerName = 'playername'
当您想要使用where过滤器进行排名时,您应该在如下所示的已传递表中使用此查询
查询
SELECT
Leaderboard.PlayerName
, Leaderboard.PlayerRating
, (@rank := @rank + 1) AS rank
FROM
Leaderboard
CROSS JOIN(
SELECT
@rank := 0
)
AS
init_user_variable
ORDER BY
Leaderboard.CurrentRating DESC
SELECT
Leaderboard_ranked.PlayerName
, Leaderboard_ranked.PlayerRating
, Leaderboard_ranked.rank
FROM (
SELECT
Leaderboard.PlayerName
, Leaderboard.PlayerRating
, (@rank := @rank + 1) AS rank
FROM
Leaderboard
CROSS JOIN(
SELECT
@rank := 0
)
AS
init_user_variable
ORDER BY
Leaderboard.CurrentRating DESC
)
AS
Leaderboard_ranked
WHERE
Leaderboard_ranked.PlayerName = 'playername'
PHP MySQLi语法
$connection = mysqli_connect("host/ip", "user", "password", "database");
$result = mysqli_query($connection, [query]);
while($row = mysqli_fetch_array($result)) {
echo $row['PlayerName'] . " " . $row['PlayerRating'] . " " . $row['rank'] "<br />"
}
$connection=mysqli_connect(“主机/ip”、“用户”、“密码”、“数据库”);
$result=mysqli_query($connection,[query]);
while($row=mysqli\u fetch\u数组($result)){
echo$row['PlayerName']。.$row['PlayerRating']。.$row['rank']。
}
当您希望根据当前评级进行排名时,您的查询应该类似于以下内容
查询
SELECT
Leaderboard.PlayerName
, Leaderboard.PlayerRating
, (@rank := @rank + 1) AS rank
FROM
Leaderboard
CROSS JOIN(
SELECT
@rank := 0
)
AS
init_user_variable
ORDER BY
Leaderboard.CurrentRating DESC
SELECT
Leaderboard_ranked.PlayerName
, Leaderboard_ranked.PlayerRating
, Leaderboard_ranked.rank
FROM (
SELECT
Leaderboard.PlayerName
, Leaderboard.PlayerRating
, (@rank := @rank + 1) AS rank
FROM
Leaderboard
CROSS JOIN(
SELECT
@rank := 0
)
AS
init_user_variable
ORDER BY
Leaderboard.CurrentRating DESC
)
AS
Leaderboard_ranked
WHERE
Leaderboard_ranked.PlayerName = 'playername'
当您想要使用where过滤器进行排名时,您应该在如下所示的已传递表中使用此查询
查询
SELECT
Leaderboard.PlayerName
, Leaderboard.PlayerRating
, (@rank := @rank + 1) AS rank
FROM
Leaderboard
CROSS JOIN(
SELECT
@rank := 0
)
AS
init_user_variable
ORDER BY
Leaderboard.CurrentRating DESC
SELECT
Leaderboard_ranked.PlayerName
, Leaderboard_ranked.PlayerRating
, Leaderboard_ranked.rank
FROM (
SELECT
Leaderboard.PlayerName
, Leaderboard.PlayerRating
, (@rank := @rank + 1) AS rank
FROM
Leaderboard
CROSS JOIN(
SELECT
@rank := 0
)
AS
init_user_variable
ORDER BY
Leaderboard.CurrentRating DESC
)
AS
Leaderboard_ranked
WHERE
Leaderboard_ranked.PlayerName = 'playername'
PHP MySQLi语法
$connection = mysqli_connect("host/ip", "user", "password", "database");
$result = mysqli_query($connection, [query]);
while($row = mysqli_fetch_array($result)) {
echo $row['PlayerName'] . " " . $row['PlayerRating'] . " " . $row['rank'] "<br />"
}
$connection=mysqli_connect(“主机/ip”、“用户”、“密码”、“数据库”);
$result=mysqli_query($connection,[query]);
while($row=mysqli\u fetch\u数组($result)){
echo$row['PlayerName']。.$row['PlayerRating']。.$row['rank']。
}
您是否尝试对$CurrentRank变量进行var_dump()处理,以查看其中是否存储了数据?您是否只需要查看他们的等级和名称?正如我所提到的,我已经可以正确显示他们的名称和等级,我只需要显示他们的等级。如果这是一个令人困惑的部分,你可以将评级视为一个分数。我没有尝试过var_dump(),但是我不确定我尝试过的许多变量中的哪些应该应用它。你能写完整的东西让我测试一下吗?谢谢mysqli\u query()
无法一次运行多个查询。您是否尝试对$CurrentRank变量进行var\u dump(),以查看数据是否存储在其中?您是否只需要查看它们的评级和名称?正如我提到的,我已经可以正确显示它们的名称和评级,我只需要显示它们的评级。如果这是一个令人困惑的部分,你可以将评级视为一个分数。我没有尝试过var_dump(),但是我不确定我尝试过的许多变量中的哪些应该应用它。你能写完整的东西让我测试一下吗?谢谢mysqli\u query()
无法同时运行多个查询。感谢您的回答!你能帮我打印“排名”值吗?正确的PHP语法是什么?@stefanplc用一个PHP MySQLi连接/查询示例更新了我的答案。非常感谢!谢谢你的回答!你能帮我打印“排名”值吗?正确的PHP语法是什么?@stefanplc用一个PHP MySQLi连接/查询示例更新了我的答案。非常感谢!谢谢我要试试这个!这太棒了!我的语法是这样的:$CurrentRating=$Connection->query(“从排行榜中选择COUNT(*),其中CurrentRating>'1250'))->fetch_assoc()[“COUNT(*)”]代码>其中“1250”将通过变量动态替换。即使我有5000名玩家,并且运行这个查询的人排名4500,这个方法还能正常工作吗?我担心如果我有太多的球员,比赛可能会太慢或者类似的事情。再次感谢!谢谢我要试试这个!这太棒了!我的语法是这样的:$CurrentRating=$Connection->query(“从排行榜中选择COUNT(*),其中CurrentRating>'1250'))->fetch_assoc()[“COUNT(*)”]代码>其中“1250”将通过变量动态替换。即使我有5000名玩家,并且运行这个查询的人排名4500,这个方法还能正常工作吗?我担心如果我有太多的球员,比赛可能会太慢或者类似的事情。再次感谢!