mysql_result():提供的参数不是有效的MySQL结果资源错误?

时间:2011-11-13 03:23:37

标签: php mysql

为某事创建登录系统并且正在获取:

  

警告: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;
}

4 个答案:

答案 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中的示例,他们都会在尝试分析结果之前检查查询中的错误。