mysql_fetch_row()错误,但为什么

时间:2013-07-05 02:01:19

标签: php mysql

所以我有这段代码:

$query = "SELECT COUNT(id) FROM users WHERE UPPER(username) = UPPER($name)";
$result = mysql_query($query);
list($count) = mysql_fetch_row($result);
if($count >= 1) { 
echo 'Username already exists; }

由于某种原因,当我在我的wamp服务器上测试它时,我回来了:“警告:mysql_fetch_row()期望参数1是资源,布尔值在...中给出”但它完成了工作!用户已注册。我知道你必须首先进行查询,然后获取行,但我这样做了!那么问题是什么:/

2 个答案:

答案 0 :(得分:0)

如果$ name是文字,您可能需要在SQL中引用它:

$query = "SELECT COUNT(id) FROM users WHERE UPPER(username) = UPPER('$name')";

您还应该确保它不包含任何未转义的引号(请参阅以前关于bobby-tables的评论......)

答案 1 :(得分:0)

您的SQL查询可能存在语法错误。这样做:

$sname = mysql_real_escape_string($name);
$query = "SELECT COUNT(id) FROM users WHERE UPPER(username) = UPPER('$sname')";

echo $query;


if (($result = mysql_query($query)) == false) {
  die(mysql_error);
}
list($count) = mysql_fetch_row($result);
if($count >= 1) { 
  echo 'Username already exists; }

当然:您应该使用mysqliPDO,因为mysql已被弃用。