[英]Check if username, email already exists in mysql db
我正在尝试检查数据库中是否已经存在用户名或电子邮件,可惜它无法正常工作。
有人知道我要失败吗?
我的代码:
<?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;
}
}
帐户创建工作正常,用户名检查和电子邮件检查不起作用。
由于database
类使用mysqli
扩展名,因此您不能对其使用mysql_XXX
函数。 您需要使用mysqli_num_rows
。
if ($result = 'false')
有两个问题:首先,您必须使用==
或===
比较值, =
是用于赋值。 其次, 'false'
是一个字符串,因为您将其放在引号中,但该函数返回布尔值false
。 它应该是:
if ($result == false)
或简单:
if (!$result)
另一个问题是,您从查询分配的变量是$results
,但是随后您测试了$result
(末尾为s
)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.