繁体   English   中英

PHP错误mysql_num_rows返回期望的布尔错误。 我的查询错了吗?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM