2015-11-25 71 views
5

我知道我们已经有很多关于这个错误的问题,但我无法修复我的代码,所以任何人在这里请帮我解决这个问题。 我这样的代码警告:mysql_result()期望参数1是资源,布尔给出

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; 

我期待着从你们的来信。我是这个新会员,所以请尽可能简单地回答您的问题。谢谢。

+2

回应您的查询而不是执行它,复制它,粘贴到phpmyadmin或类似的东西,看看查询是否执行。 – Epodax

+1

http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php?rq=1 –

+1

为什么你第一次找到user_id用户名,然后你第二次查询来验证密码,而不是立即做出来?并在这两个行动之间,你清理用户名(所以它可能会变得甚至不同之间的2个查询..) – Svetoslav

回答

-1

删除false旁边的查询中的最后一个``。

+0

哪里是符号'你的意思是?你能修复它并在这里为我打印正确的代码吗? –

+0

return(mysql_result(mysql_query(“SELECT COUNT('user_id')AS count from'users' WHERE'username' ='$ username'AND'password' ='$ password'”),0)== 1)? $ user_id:false; –

+0

谢谢你的帮助,但它仍然不适用于我:(( –

0

这里有一点你重拍的方法。

!重要 - MYSQL功能应与库MySQLi被替换为MySQL驱动程序是一个PHP 5.5以后弃用,并在新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; 
} 
+0

谢谢,但它仍然不适用于我:(( –

+0

我关注这一个从YouTube的视频,他们可以运行它,而我不能。 –

+0

什么是不工作?你想从这个功能? – Svetoslav

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()

+0

它不适用于我,仍然错误,我确实在视频上关注这一个,他们可以运行它,而我不能。 –

+0

如果您仍然收到该警告,我会怀疑您收到数据库错误。也许回声SQL并手动运行并解决SQL错误。一旦这个工作正常,那么你可以排除。 –

0

那是错误意味着所有在mysql_result(在这里)是返回false不是国土资源!

您需要的var_dump,您在您的查询 得到的最终结果,然后尝试通过的PMA通过控制台从MySQL>
执行中你会看到,没有什么是查询返回或错误。

然后修复您的查询和/或代码,很酷!

如果太难,发表评论您的结果查询,我会修复它!

相关问题