【问题标题】:Ranking system using MySQLi and PHP (Multiple checks)使用 MySQLi 和 PHP 的排名系统(多重检查)
【发布时间】:2016-12-17 20:48:44
【问题描述】:

我设置了这个函数来获取用户排名

function rank($user) {
    $q = query("SELECT * FROM members ORDER BY level DESC");
    $rank = 0;
    while($row = mysqli_fetch_array($q)) {
        $rank++;
        if($row['username'] == $user) {
            return $rank;
        }
    }
}

请注意:query() 是一个自动查询数据库的函数。

这是返回 false,我想要的是这个:

username    level    money    exp    id
john        3        2        213    4
bob         3        132      23     5
mark        4        3423     2      6

我希望它根据级别进行排序,但是如果两个用户(johnbob)具有相同的级别,则求助于 exp,然后是金钱,然后是用户 ID。

【问题讨论】:

    标签: php mysql sql select sql-order-by


    【解决方案1】:

    您可以在order by 子句中给出多个表达式:

    SELECT * FROM members ORDER BY level DESC, exp DESC, money DESC, user_id DESC
    

    【讨论】:

    • query("SELECT * FROM members ORDER BY level DESC, money DESC, id DESC");该查询似乎不起作用。
    • @PhilGibson 你必须比“不工作”更具体一些
    • @PhilGibson 你错过了order by 子句中的“exp DESC”。
    • 他提到query 函数在他自己的查询中返回false。看来他还有别的问题。
    • 是的。您的 SQL 查询一切正常,但您的代码内部或其他地方出现问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-18
    • 2014-07-19
    相关资源
    最近更新 更多