警告:mysqli_num_rows()期望参数1为mysqli_result,第12行的C:\ xampp \ htdocs \ medcares \ index.php中给出布尔值

时间:2016-10-10 12:45:59

标签: php html mysql

我正在创建一个register.php,我现在正处于创建"数据库中的用户名和电子邮件检查阶段"不知怎的,我总是得到一个错误。请帮我解决这个问题。感谢

<?php
  require_once('pages/connect.php');
  if (isset($_POST['username']) && isset($_POST['password'])){
    $username = mysqli_real_escape_string($connection, $_POST['username']);
    $email = mysqli_real_escape_string($connection, $_POST['email']);
    $password = md5($_POST['password']);
    $repassword = md5($_POST['repassword']);
    if ($password == $repassword) {
      $fmsg = "";
        $usernamesql = "SELECT * FROM 'users' WHERE username='$username'";
        $usernameres = mysqli_query($connection,$usernamesql);
        $count = mysqli_num_rows($usernameres);
        if($count == 1){
          $fmsg .= "Username Already Exist!";
        }

        $query = "INSERT INTO 'users' (username, password, email) VALUES ('$username', '$password', '$email')";
        $result = mysqli_query($connection, $query);
        if($result){
            $smsg = "User Created Successfully.";
        }else{
            $fmsg .= "Failed to Register User";
        }
    } else {
        $fmsg = "Password Do not Match";
    }
}
?>

我已多次检查

$usernamesql = "SELECT * FROM 'users' WHERE username='$username'";

但我仍然收到错误消息。请帮我。谢谢你的帮助。

2 个答案:

答案 0 :(得分:0)

此问题总是由失败的SQL语句引起,这会导致错误的返回值。应该检查这一点,以确保您不要尝试将其用作例如行集。

在这个特定的实例中,您应该使用users(或等效的反引号,尽管在这种情况下不需要),而不是'users' 。前者是数据库对象,后者是字符串文字。

换句话说,其中一个:

$usernamesql = "SELECT * FROM  users  WHERE username='$username'";
$usernamesql = "SELECT * FROM `users` WHERE username='$username'";

答案 1 :(得分:0)

查询中的引号错误。

$usernamesql = "SELECT * FROM 'users' WHERE username='$username'";

'用户'周围的引号应为`样式引号。

此外,你应该添加如下内容:

if ( !$usernameres ) {
     die(mysqli_error());
}

这应该在您执行mysqli_query的行的正下方。这将让您看到实际的错误消息。