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/en/function.mysql-query.php

在您的例子中,您向mysql_num_rows函数传递了一个FALSE,这就是您得到该错误的原因。

mysql_num_rows需要mysql资源$query_run被设置为false,因为WHERE子句中的"username"周围有单引号,导致查询出错。