检查mysql db中是否存在用户名,电子邮件

时间:2015-10-21 12:39:29

标签: php mysql sql

我正在尝试检查我的数据库中是否已存在用户名或电子邮件,遗憾的是它无法正常工作。

有没有人知道我失败的地方?

我的代码:

<?php
    require_once('handling/database.php');
    if(!empty($_POST)){
        $username = $_POST['username'];
        $email = $_POST['email'];
        $password = $_POST['password'];
        $database = new database;
        $database->connect();

        $user_check = $database->execute_query("SELECT * FROM Users WHERE Username = '" . $username . "'");
        $email_check = $database->execute_query("SELECT * FROM Users WHERE Email = '" . $email . "'");

        if($user_check && mysql_num_rows($user_check) > 0){
            echo 'The following username is already in use: ' . $username;
        }else if($email_check && mysql_num_rows($email_check) > 0){
            echo 'The following email is already in use: ' . $email;
        }else{
            $results = $database->execute_query("INSERT INTO Users (Username, Email, Password) VALUES ('" . $username . "', '" . $email . "', '" . $password . "')");
            if($result = 'false'){
                echo 'The following account was created: ' . $username;
            }else{
                echo 'Error: Could not create the following account: ' . $username;
            }
        }
    }
?>

来自我的database.php类的execute_query函数:

function execute_query($sql) {
  if ( $results = $this->_mysqli->query($sql) ) {
     return $results;
  }
  else {
     return false;
  }
}

帐户创建工作正常,用户名检查和电子邮件检查没有。

1 个答案:

答案 0 :(得分:3)

由于mysqli类使用mysql_XXX扩展名,因此您无法使用mysqli_num_rows类。您需要使用if ($result = 'false')

==

有两个问题:首先,您必须使用====来比较值,'false'用于分配。其次,false是一个字符串,因为你把它放在引号中,但函数返回布尔值if ($result == false) 。它应该是:

if (!$result)

或简单:

$results

另一个问题是,您从查询中分配的变量是$result,但随后您测试s(最后没有{{1}})。

相关问题