为某事创建登录系统并且正在获取:
警告:mysql_result():提供的参数不是第21行的... / func / user.func.php中的有效MySQL结果资源
这是我的代码:
function user_register($email, $name, $password) {
}
function user_exists($email) {
$email = mysql_real_escape_string($email);
$query = mysql_query("SELECT COUNT('user_id') FROM 'users' WHERE 'email' ='$email'");
//this is line 21:
return (mysql_result($query, 0) == 1) ? true : false;
}
答案 0 :(得分:1)
您的SQL充满了语法错误,单引号用于引用字符串文字,反引号(或标准SQL中的双引号)用于标识符。试试这个:
$query = mysql_query("SELECT COUNT(user_id) FROM users WHERE email = '$email'");
您不需要引用任何标识符,所以不要打扰。
来自fine manual:
对于SELECT,SHOW,DESCRIBE,EXPLAIN和其他返回结果集的语句, mysql_query()会在成功时返回资源,如果出错则返回FALSE。
您可能希望在修复SQL语法错误后添加一些错误检查。
答案 1 :(得分:1)
您的查询中存在错误。如果要确定错误是什么,请使用mysql_error()
输出答案 2 :(得分:0)
您的查询有语法错误。您在字段和表名称上使用单引号。从它们变为字段/表名称变为普通字符串。因此,您的查询归结为count(some string) from someotherstring where yetanotherstring
。
如果你的查询调用是这样构建的:
$result = mysql_query(...) or die(mysql_error());
您已被告知语法错误。就目前而言,您的代码假设查询成功,这是一件非常糟糕的事情。查询成功的方法正是 ONE ,并且有太多方法可以使其失败。
答案 3 :(得分:0)
你的代码没有错误处理,所以如果出现任何问题,它会继续无意识地试图用石块做汤。看一下manual中的示例,他们都会在尝试分析结果之前检查查询中的错误。