警告:mysql_result()期望参数1是资源,第26行的xxx.php中给出了boolean

时间:2012-08-09 18:16:45

标签: php

我尝试修复它,但我只是看不出问题出在哪里?有人帮帮我!非常感谢你

function user_exists($email){
    $email = mysql_real_escape_string($email);
    $query = mysql_query("SELECT COUNT('user_id') FROM 'users' WHERE 'email'='$email'");
    return (mysql_result($query, 0) == 1 ) ? true:false; //this is line 26
}

?>

3 个答案:

答案 0 :(得分:4)

尝试删除查询中字段名和表名周围的引号:

$query = mysql_query("SELECT COUNT(user_id) FROM users WHERE email='$email'");

确实总是确保在运行查询后检查返回值,并在出现问题时回显数据库错误消息。

答案 1 :(得分:3)

首先,您不需要在return中使用三元运算符。

return (mysql_result($query, 0) == 1);

执行相同的操作,无需处理额外的逻辑。

其次,您的查询在字段名称周围使用'。它不是字段名称的单引号,它是一个反向标记(`)。

$query = mysql_query("SELECT COUNT(`user_id`) FROM `users` WHERE `email`='$email'");

请注意:您应该停止使用mysql_*个功能。他们被弃用了。而是使用PDO(从PHP 5.1开始支持)或mysqli(从PHP 4.1开始支持)。如果您不确定使用哪一个,read this SO article

答案 2 :(得分:1)

mysql_query在出错时返回false。您应始终检查错误情况,并在检测到错误时采取措施

function user_exists($email){
    $email = mysql_real_escape_string($email);
    $sql = "SELECT COUNT('user_id') FROM 'users' WHERE 'email'='$email'";
    if(!($query = mysql_query($sql))) die(mysql_error());
    return (mysql_result($query, 0) == 1);
}