mysqli排行榜获取等级语法问题

时间:2015-03-11 07:27:31

标签: php mysqli leaderboard

我正在尝试构建一个带有排行榜的成员系统,该排行榜根据用户收到的内容数量对用户进行排名。直到排行榜本身一切正常。由于我是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;
}

任何帮助将不胜感激!

0 个答案:

没有答案