我尝试修复它,但我只是看不出问题出在哪里?有人帮帮我!非常感谢你
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
}
?>
答案 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);
}