mysql_num_rows()期望参数1为资源,第33行给出布尔值
if($password!=$password_again){
echo'password did not match';
}else{
$query="SELECT username FROM users WHERE 'username'='$username'";
$query_run=mysql_query($query);
if(mysql_num_rows($query_run)==1){
echo'the username'.$username.'already exists';
}else{
echo'ok';
}
}
答案 0 :(得分:4)
'username'='$username'
将其更改为username='$username'
答案 1 :(得分:4)
从mysql_query获取布尔值意味着存在错误 - 查询中存在语法错误(您的错误),或其他东西爆炸(例如首先无法连接)。
将查询调用更改为
$query_run=mysql_query($query) or die(mysql_error());
我能看到的语法错误是由于引号错误
$query="SELECT username FROM users WHERE 'username'='$username'";
^--------^----
当你引用这样的字段名称时,它不再是字段名称 - 它只是一个字符串。但是,这不是SQL语法错误,当您进行无效比较时,它是一个逻辑错误,而不是将真实用户名与数据库中的用户名字段进行比较。
答案 2 :(得分:0)
您的SELECT查询看起来不正确:
$query="SELECT username FROM users WHERE 'username'='$username'";
应该是
之类的东西$query="SELECT username FROM users WHERE username='$username'";
即。不要将列名称放在单引号中。但即使这样也很危险 - 它会打开SQL注入攻击的代码。
答案 3 :(得分:0)
在将mysql_query发送到mysql_num_rows之前,您没有检查mysql_query是返回资源还是FALSE。请查看此处的文档以了解正确用法:
http://php.net/manual/en/function.mysql-query.php
在您的情况下,您将fALSE传递给mysql_num_rows函数,这就是您收到该错误的原因。
答案 4 :(得分:0)
mysql_num_rows需要一个MySQL资源。 $ query_run被设置为false,因为你的查询是错误的,因为你的WHERE子句中有'username'的单引号。