警告:mysqli_num_rows() 期望参数 1 为 mysqli_result,bool 给定...我该怎么办? [复制]

Posted

技术标签:

【中文标题】警告:mysqli_num_rows() 期望参数 1 为 mysqli_result,bool 给定...我该怎么办? [复制]【英文标题】:Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, bool given... what should I do? [duplicate] 【发布时间】:2020-04-04 19:14:31 【问题描述】:

这里是代码

if (isset($_POST['signUp']))

    $username = mysqli_real_escape_string($database_connect, trim($_POST['username']));
    $email = mysqli_real_escape_string($database_connect, trim($_POST['email']));
    $password = mysqli_real_escape_string($database_connect, trim($_POST['password']));
    $password2 = mysqli_real_escape_string($database_connect, trim($_POST['password2']));

    if (!empty($username) && !empty($email) && !empty($password) && !empty($password2)
                 && $password == $password2)
        $query = "SELECT * from 'users' WHERE username = '$username'";
        $data = mysqli_query($database_connect, $query);
        if (mysqli_num_rows($data) == 0) 
            $query = "INSERT INTO 'users' (username, email, password, password2) VALUES('$username', '$email', SHA('$password'), SHA('$password2'))";
            mysqli_query($database_connect, $query);
            echo "OK";
            mysqli_close($database_connect);
            exit();
         else 
            echo "Such login already exists";
        

我该怎么办? P.S 我已经在 Stack Overflow 上搜索过这个问题,但没有找到解决方案。

【问题讨论】:

表名周围没有引号 切勿以明文形式或使用 MD5/SHA1 存储密码! 仅存储使用 phppassword_hash() 创建的密码哈希,然后您可以使用 password_verify() 进行验证。看看这个帖子:How to use password_hash 并了解更多关于bcrypt & password hashing in PHP OK 这个问题已经解决了,谢谢大家!但它仍然没有将任何数据保存到我的数据库中...... 【参考方案1】:

您应该阅读 mysqli::query 的文档。它返回一个mixed 类型——当你的查询失败时,它返回false,不是一个有效的结果。所以..您的查询一定失败了。

在使用$data之前,你需要检查是否$data === false

【讨论】:

你,其实,不要 检查query 函数的返回值是一个非常糟糕的主意,完全没有必要。如果您启用正确的错误报告,那么这种做法就变得完全多余了。 OK 这个问题已经解决了,谢谢大家!但它仍然没有将任何数据保存到我的数据库中......

以上是关于警告:mysqli_num_rows() 期望参数 1 为 mysqli_result,bool 给定...我该怎么办? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

警告:mysqli_num_rows() 期望参数 1 为 mysqli_result,布尔值在 /home/digibeem/public_html/forgot_pass.php 第 55 行 [

mysqli_num_rows() 期望参数通过同一页面上的较早查询有效

警告:mysql_query() 期望参数 2 是资源 [重复]

警告问题:期望参数 1 为 mysqli_result [重复]

获取 PHP 错误警告:fputcsv() 期望参数 2 为数组

警告:mysql_num_rows() 期望参数 1 是资源,在第 189 行给出布尔值 [重复]