mysqli函数收集用户

时间:2013-01-28 20:59:06

标签: php mysql mysqli

正如我在旧帖子中所描述的那样,我正在将我的“小”项目从MYSQL升级为MYSQLi。我已成功升级整个项目,我认为一切正常,直到我创建新用户..问题是我可以使用我想要的用户名,它会说数据不正确但数据是否正确并登录successl no mater我使用的用户名总是使用ID = 1将用户名作为用户名登录。

这是我的代码:

登录:

function login($username, $password) {
    $id = user_id_from_username($username);
    $username = sanitize($username);
    $password = md5($password);

    global $db_connect;

    $result = $db_connect->query("SELECT COUNT(id) FROM `members` WHERE `username` = '$username' AND `password` = '$password'");
    if (false === $result) {
        return false;
    }
    return ($result->num_rows == 1) ? $id : false;
}

USERNAME的用户ID:

function user_id_from_username($username) {
    $username = sanitize($username);
    global $db_connect;

    $result = $db_connect->query("SELECT(id) FROM members WHERE username = '$username'");
    if (false === $result) {
        return false;
    }
    return ($result->num_rows == 1) ? true : false;
}

任何帮助都会得到满足,我尝试了很多东西,然后将我的所有MYSQLiMYSQL文件进行比较,但我仍然找不到任何问题。

2 个答案:

答案 0 :(得分:1)

return ($result->num_rows == 1) ? $id : false;

将始终返回true,因为您使用SELECT COUNT(id)计算行数,因此您将始终拥有一个结果

第二件事,在user_id_from_username:

 return ($result->num_rows == 1) ? true : false;

您返回TRUE而不是user_id。更改它以便返回用户ID,而不是true。

true == 1,这就是为什么你总是以userid 1结束。

答案 1 :(得分:0)

您的函数函数user_id_from_username($ username)将始终返回true或false。您将获得用户ID 1,因为该函数返回true = 1。

在将其重写为MYSQLi之前,该功能是什么样的?