php - mysqli 收集用户的函数

标签 php mysql mysqli

正如我在旧帖子中所述,我正在将我的“小型”项目从 MYSQL 升级到 MYSQLi。我已经成功升级了整个项目,我认为一切都工作正常,直到我创建了新用户。问题是我可以使用我想要的用户名,它会说如果数据不正确,但当数据正确并登录时成功后,无论我使用什么用户名,它总是以 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 文件进行比较,但我仍然找不到任何问题.

最佳答案

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 结束。

关于php - mysqli 收集用户的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14571128/

相关文章:

php - 使用 PHP PDO 执行多个 SQL 查询的最佳实践

mysql - 如何向所有帖子添加具有随机值的自定义字段

php - 警告: mysqli_fetch_assoc() expects exactly 1 parameter, 2 given

php - Codeigniter 调用成员函数错误

php - 如何摆脱 LEFT JOIN SQL 查询中的重复值

php - 如何在 PHP 中使用 OR 运算符?

php - 如何解决 Uncaught Error : Class 'mysqli' not found

php - 如何在mysql中添加文本+图像+文本+图像+ ...?

php - mysql 查询到 excel

php mysql IN 搜索行