【问题标题】:Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, bool given... what should I do? [duplicate]警告:mysqli_num_rows() 期望参数 1 为 mysqli_result,bool 给定...我该怎么办? [复制]
【发布时间】: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 上搜索过这个问题,但没有找到解决方案。

【问题讨论】:

标签: php sql mysqli


【解决方案1】:

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

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

【讨论】:

  • 你,其实,不要
  • 检查query 函数的返回值是一个非常糟糕的主意,完全没有必要。如果您启用正确的错误报告,那么这种做法就变得完全多余了。
  • OK 这个问题已经解决了,谢谢大家!但它仍然没有将任何数据保存到我的数据库中......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-11-08
  • 2022-11-28
  • 1970-01-01
  • 2015-04-01
  • 1970-01-01
  • 2022-12-31
相关资源
最近更新 更多