正如我在旧帖子中所述,我正在将我的“小型”项目从 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;
}
任何帮助将不胜感激,我尝试了很多东西,并将我的所有 MYSQLi
与 MYSQL
文件进行比较,但我仍然找不到任何问题.
最佳答案
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/