[英]PHP error mysql_num_rows returns expects boolean error. is my query wrong?
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';
}
}
'username'='$username'
更改为username='$username'
从mysql_query返回布尔值意味着存在错误-查询中存在语法错误(您的语法错误),或者其他错误(例如,第一次连接失败)。
将查询调用更改为
$query_run=mysql_query($query) or die(mysql_error());
我看到的语法错误是由于引号错误引起的
$query="SELECT username FROM users WHERE 'username'='$username'";
^--------^----
当您引用这样的字段名称时,它不再是字段名称,而是一个字符串。 但是,这不是SQL语法错误,而是逻辑错误,因为您进行的是无效的比较,而不是将真实的用户名与数据库中的用户名字段进行比较。
您的SELECT查询看起来不正确:
$query="SELECT username FROM users WHERE 'username'='$username'";
应该可能是这样的
$query="SELECT username FROM users WHERE username='$username'";
即不要将列名放在单引号中。 但这甚至很危险-它会使您的代码容易受到SQL注入攻击。
您没有在将mysql_query发送到mysql_num_rows之前检查它是否返回了资源或FALSE。 请查看此处的文档以正确使用:
http://php.net/manual/zh/function.mysql-query.php
在您的情况下,您要将FALSE传递给mysql_num_rows函数,这就是为什么会出现该错误的原因。
mysql_num_rows需要一个MySQL资源。 由于您的查询错误,由于您的WHERE子句中'username'周围的单引号,$ query_run被设置为false。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.