Php 如何检查球员是否在前10名(排名)
我有一些玩家的分数被添加到表格中,我想在PHP中做一个检查,看看他们的分数是在前10名之内还是在前10名之外 我已经准备好了以下内容,现在需要在Php 如何检查球员是否在前10名(排名),php,mysql,Php,Mysql,我有一些玩家的分数被添加到表格中,我想在PHP中做一个检查,看看他们的分数是在前10名之内还是在前10名之外 我已经准备好了以下内容,现在需要在DESC中添加查询来排序highscore,并让我知道userid是否排在前10位 当前: $currentuser = $_SESSION['userid']; $mysqli = new mysqli($hostname, $db_username, $db_password,$db_name); if ($mysqli-&g
DESC
中添加查询来排序highscore
,并让我知道userid
是否排在前10位
当前:
$currentuser = $_SESSION['userid'];
$mysqli = new mysqli($hostname, $db_username, $db_password,$db_name);
if ($mysqli->connect_error) {
die('Error : ('. $mysqli->connect_errno .') '. $mysqli->connect_error);
}
$res = $mysqli->query("SELECT * FROM players WHERE userid=" . $currentuser);
尝试:
$currentuser = $_SESSION['userid'];
$mysqli = new mysqli($hostname, $db_username, $db_password,$db_name);
if ($mysqli->connect_error) {
die('Error : ('. $mysqli->connect_errno .') '. $mysqli->connect_error);
}
$current = $mysqli->query("SELECT * FROM players WHERE userid=" . $currentuser);
$res = $mysqli->query("SELECT * FROM players ORDER BY highscore DESC LIMIT 10");
foreach ($res as $player) {
if ($player = $current) {
echo "in the top 10" }
else {
echo "not in the top 10"}
}
这是否正确?检查
$currentuser
是否在前10名中,或者是否可以以更干净的方式实现,这是正确的逻辑吗?您可以使用以下查询:
$query="SELECT 1 from players WHERE $currentuser in (SELECT userid FROM players ORDER BY highscore DESC LIMIT 10) LIMIT 1"
if($result=$mysqli->query($query))
{
if($result->num_rows >0 )echo 'in top 10';
else echo 'not in top 10';
}
else echo 'error';
假设您想列出所有用户,然后指出前10名中的用户,那么这里有一个选项,使用子查询将整个列表组合成一个查询,以获得前10名玩家、一个
case
语句和一个外部联接
:
select p.userid,
case
when p2.userid is not null
then 'in the top 10'
else 'not in the top 10'
end intopten
from players p
left join (select *
from players
order by highscore desc
limit 10) p2 on p.userid = p2.userid
根据您的意见,这可能是最简单的选择:
select *
from (
select *
from players
order by highscore desc
limit 10
) t
where userid = 1
$result
?如果我是你,我会这样写谢谢你,很快会测试它:)它不应该在的地方,“$currentuser.”在中,即使在那时仍然回显“error”,我修改了它,更快,自己检查了它。它对我有用。(抱歉,缺少一个else
)更重要的是,只需一个简单的PHP/MySQL查询,看看当前用户是否在前10名,而不是列出所有用户或执行任何连接:)@DT.DTDG——好的,我现在明白了。不需要任何联接
,您只需要一个查询。这应该是你最好的选择。Ok看起来不错-这样就选择了用户,但是如何检查它是否排在前10名?