我正在尝试检查我的数据库中是否已存在用户名或电子邮件,遗憾的是它无法正常工作。
有没有人知道我失败的地方?
我的代码:
<?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;
}
}
帐户创建工作正常,用户名检查和电子邮件检查没有。
答案 0 :(得分:3)
由于mysqli
类使用mysql_XXX
扩展名,因此您无法使用mysqli_num_rows
类。您需要使用if ($result = 'false')
。
==
有两个问题:首先,您必须使用===
或=
来比较值,'false'
用于分配。其次,false
是一个字符串,因为你把它放在引号中,但函数返回布尔值if ($result == false)
。它应该是:
if (!$result)
或简单:
$results
另一个问题是,您从查询中分配的变量是$result
,但随后您测试s
(最后没有{{1}})。