Php 登入登记表格问题

Php 登入登记表格问题,php,forms,login,registration,Php,Forms,Login,Registration,我正在为我的网站制作登录/注册表格。当我以新用户名注册为新用户时,尽管该用户名看起来好像已经存在,即使数据库是空的。我将试着让您了解这方面的代码,但我不确定问题出在哪里 在register.php中,它检查用户输入是否与数据库中的任何内容匹配,它将输出正确的错误消息,如果不匹配,它将转到register函数将用户注册到数据库中。谢谢:) 和寄存器函数 public function register($username, $password, $email, $firstName, $lastN

我正在为我的网站制作登录/注册表格。当我以新用户名注册为新用户时,尽管该用户名看起来好像已经存在,即使数据库是空的。我将试着让您了解这方面的代码,但我不确定问题出在哪里

在register.php中,它检查用户输入是否与数据库中的任何内容匹配,它将输出正确的错误消息,如果不匹配,它将转到register函数将用户注册到数据库中。谢谢:)

和寄存器函数

public function register($username, $password, $email, $firstName, $lastName, $accountType){

    global $bcrypt; // making the $bcrypt variable global so we can use here

    $time       = time();
    $ip         = $_SERVER['REMOTE_ADDR']; // getting the users IP address
    $email_code = $email_code = uniqid('code_',true); // Creating a unique string.

    $password   = $bcrypt->genHash($password);

    $query  = $this->mysqli->prepare("INSERT INTO `users` (`username`, `password`, `email`, `ip`, `time`, `email_code`, `firstName`, `lastName`, `accountType`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?) ");

    $query->bind_param('ssssissss',$username, $password,  $email, $ip, $time, $email_code, $firstName, $lastName, $accountType);


    $query->execute();
            }

我相信您的问题在于
公共功能用户存在($username)
-

$rows
没有设置为查询中的值,而是在
$query->fetch()
成功时返回
true
。阅读手册中的-

在调用mysqli_stmt_fetch()之前,应用程序必须绑定所有列

试着把它改成-

public function user_exists($username) {

    $query = $this->mysqli->prepare("SELECT COUNT(`id`) FROM `users` WHERE `username`= ?");
    $query->bind_param('s', $username);

    $query->execute();

    // Bind the results       
    $query->bind_result($count);

    while($rows = $query->fetch()){

       if($count == 1){
          return true;
       }else{
          return false;
       }

    }

}

您还需要为
公共功能电子邮件执行此操作($email)

问题出在哪里?你期望的输出是什么?您得到的是什么输出?数据库中有0个信息,但当我尝试注册时,它读取到用户名存在,即使数据库为空。我得到“该用户名已存在”。显示您的数据库结构
public function register($username, $password, $email, $firstName, $lastName, $accountType){

    global $bcrypt; // making the $bcrypt variable global so we can use here

    $time       = time();
    $ip         = $_SERVER['REMOTE_ADDR']; // getting the users IP address
    $email_code = $email_code = uniqid('code_',true); // Creating a unique string.

    $password   = $bcrypt->genHash($password);

    $query  = $this->mysqli->prepare("INSERT INTO `users` (`username`, `password`, `email`, `ip`, `time`, `email_code`, `firstName`, `lastName`, `accountType`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?) ");

    $query->bind_param('ssssissss',$username, $password,  $email, $ip, $time, $email_code, $firstName, $lastName, $accountType);


    $query->execute();
            }
$rows = $query->fetch();
public function user_exists($username) {

    $query = $this->mysqli->prepare("SELECT COUNT(`id`) FROM `users` WHERE `username`= ?");
    $query->bind_param('s', $username);

    $query->execute();

    // Bind the results       
    $query->bind_result($count);

    while($rows = $query->fetch()){

       if($count == 1){
          return true;
       }else{
          return false;
       }

    }

}