使用MySQLi和PHP的排名系统(多重检查)

使用MySQLi和PHP的排名系统(多重检查),php,mysql,sql,select,sql-order-by,Php,Mysql,Sql,Select,Sql Order By,我设置了这个函数来获取用户等级 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; }

我设置了这个函数来获取用户等级

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

我希望它根据级别进行排序,但是如果两个用户(
john
bob
)具有相同的级别,则使用exp,然后使用money,然后使用user ID。

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

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

查询(“按级别描述、金额描述、id描述从成员中选择*);该查询似乎不起作用。@PhilGibson您必须比“不起作用”更具体一点@PhilGibson,您在
order by
子句中漏掉了“exp DESC”。他提到
query
函数在自己的查询中返回false。看来他还有别的问题。您的SQL查询很好,但是您的代码内部或其他地方出现了问题。