-3

我使用一些功能来让用户登录网站。我首先创建了一个如下所示的 login():

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

$username = sanitize($username);
$password = md5($password);

return (mysql_result(mysql_query("SELECT COUNT(`id`) FROM `users` WHERE `username` = '$username' AND `password` = '$password'"), 0) == 1) ? $id : false;
}

正如您在函数的第二行看到的那样,它调用了另一个函数 user_id_from_username。看起来像这样:

function user_id_from_username($username) {
$username = sanitize($username);
return mysql_result(mysql_query("SELECT `id` FROM `users` WHERE `username` == '$username'"), 0, `id`);
}

现在,当我使用登录功能时,我收到一条警告,说明如下:

警告:mysql_result():提供的参数不是第 62 行 .../users.php 中的有效 MySQL 结果资源

它指的是user_id_from_username的return语句中的mysql_result。它会导致登录无法正常工作。

我无法解决此警告。大家觉得有什么不妥吗?

非常感谢!

4

1 回答 1

2

它可能在查询中:

WHERE `username` == '$username'"

尝试将其更改为(删除额外的 =)):

return mysql_result(mysql_query("SELECT `id` FROM `users` WHERE `username` = '$username'"), 0, "id");

编辑:另外,如果这是一个新项目,请使用 PDO 而不是 mysql_ 函数,请添加一些错误处理。

于 2013-05-06T22:41:05.293 回答