mysqli_result类的对象无法转换为int,所有条目都返回true

时间:2013-10-17 21:36:00

标签: php mysqli

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

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

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

2 个答案:

答案 0 :(得分:0)

可以这样做:

return ($res && $res->num_rows >= 1) ;

答案 1 :(得分: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

这导致了一个问题:如果有两行或更多行返回怎么办?