我知道我们已经对此错误提出了很多疑问,但我无法修复我的代码,所以这里的任何人都可以帮我解决这个问题。 我的代码就像这样
function login($username, $password) {
$user_id = user_id_from_username($username);
$username = sanitize ($username);
$password = md5 ($password);
return (mysql_result(mysql_query("SELECT COUNT (`user_id`) FROM `users`
WHERE `username` = '$username' AND `password` = '$password'"),0)==1) ? $user_id : false;
我很期待收到你们的来信。我是这方面的新成员,所以请尽量保持你的答案。谢谢。
答案 0 :(得分:1)
我认为出现这个问题是因为: 你到处写mysql。而不是到处写mysqli。 如果到现在也问题没有解决。让我知道我会告诉另一种方法来解决这个问题。
答案 1 :(得分:0)
这是你翻译的方法。
!重要 - MYSQL函数应该用MYSQLi替换,因为在PHP 5.5之后不推荐使用MYSQL驱动程序,并在新的PHP7中删除...
function login($username, $password) {
$username = sanitize ($username);
$password = md5 ($password);
$sql = "SELECT `user_id` FROM `users` WHERE `username` = '{$username}' AND `password` = '{$password}'";
$result = mysql_query($sql);
if( $row = mysql_fetch_assoc($result)) {
return $row['user_id'];
}
return FALSE;
}
答案 2 :(得分:0)
mysql_query将在出错时返回false,并在成功时返回资源。在调用mysql_result之前,需要检查mysql_query的返回值。
$resource = mysql_query("SELECT COUNT (`user_id`) FROM `users` WHERE `username` = '$username' AND `password` = '$password'") or die(mysql_error());
if($resource !== false)
{
return (mysql_result($resource,0)==1) ? $user_id : false;
}
return false
如果您还没有使用mysql_real_escape_string()
,我也会转义输入答案 3 :(得分:0)
这就是错误意味着mysql_result(HERE)中的所有内容都返回false而不是资源!
你需要var_dump,你在查询中得到的最终结果 然后尝试从mysql>执行通过控制台的PMA执行 您将看到在查询中没有返回任何内容或错误。
然后修复你的查询和/或代码并且很酷!
如果太难,请在评论中发布您的结果查询,我会解决它!
答案 4 :(得分:-1)
删除查询旁边的最后一个`。