-4

我正在做一个简单的登录。一个逻辑是,如果用户名不存在,那么他们会收到一条错误消息,然后他们会被重定向到注册页面。但是,当我运行我的代码时,我不断收到上述错误,无论我输入什么作为用户名,它仍然返回为真。

   $res = $mysqli->query("SELECT Count(`userID`) FROM `users` WHERE `UserName` = '$username'");
    if($res ==0){
        return false;
    }
    else
        return true;
}

我在开发数据库时控制它,因此知道其中有哪些用户名。我的印象是,如果我输入数据库中的用户名,计数将为 1,因此将返回 true,同样,如果我输入的名称不在数据库中,则计数将为 0,因此 $res会是假的吗?

4

2 回答 2

0

你还是要数!mysqli::query 的返回值不是整数,它是一个结果对象。

if ($res->num_rows == 0) {
    return false;
} else {
    return true;
}

详细地创建返回值被认为不是最好的编码风格。

return ($res->num_rows > 0); // will be true if result is bigger than 0

这就引出了一个问题:如果返回了两行或多行怎么办?

于 2013-10-17T21:50:11.667 回答
-1

可以这样做:

return ($res && $res->num_rows >= 1) ;
于 2013-10-17T21:50:11.293 回答