[英]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.