警告:mysql_result()期望参数1是资源,给定布尔值

时间:2015-11-25 07:51:23

标签: php sql

我知道我们已经对此错误提出了很多疑问,但我无法修复我的代码,所以这里的任何人都可以帮我解决这个问题。 我的代码就像这样

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;

我很期待收到你们的来信。我是这方面的新成员,所以请尽量保持你的答案。谢谢。

5 个答案:

答案 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)

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