我正在尝试构建一个带有排行榜的成员系统,该排行榜根据用户收到的内容数量对用户进行排名。直到排行榜本身一切正常。由于我是mysqli的新手,因此我搜索了一种获取用户等级的方法,而不是每次都构建整个排行榜。我找到了这个帖子:MySQL Get Rank from Leaderboards,它使用了这个解决方案:
SELECT uo.*,
(
SELECT COUNT(*)
FROM Scores ui
WHERE (ui.score, -ui.ts) >= (uo.score, -uo.ts)
) AS rank
FROM Scores uo
WHERE name = '$name';
这似乎有道理,而且我理解结构,但我似乎无法弄清楚如何将其置于实际有效的陈述中。我尝试通常使用预准备语句,但我不确定这是否适用于这种语法(我无法使其工作)。最后,我最终把整个事情转换成下面的代码,导致显示" $ count_heart",这是0,"没有好"。
if ($sql = $db->prepare("SELECT musichearts FROM members WHERE id = ?")) {
$sql->bind_param('i',$id);
$sql->execute();
$sql->bind_result($count_heart);
while ($sql->fetch()) {
if ($sql2 = $db->prepare("SELECT COUNT(*) FROM members WHERE (musichears > ?)")) {
$sql2->bind_param('i',$count_heart);
$sql2->execute();
$col1 = null;
$sql2->bind_result($hearts_musi);
while ($sql2->fetch()) {
echo "counted {$col1} records\n";
}
$sql2->close();
} else {
echo "no good";
}
}
echo $count_heart;
echo $hearts_musi;
}
任何帮助将不胜感激!