2016-08-01 115 views
-4

我已經問過這個問題了(但是有另外一個問題)。請參閱此thread,看看我在說什麼。請不要說我應該使用PDO或改進MySQLi,因爲一旦我開始瞭解它,我就會改變它。PHP - 檢查用戶名或電子郵件是否已被使用

如果我想讓其他字段「已被檢查」,如果它已經存在,該怎麼辦?我的代碼工作正常,但它只是用戶名,我也想檢查電子郵件地址是否已被採取或其他領域。

我的代碼:

​​

這不是一個重複的問題,在這裏的問題是如何將其簽入單個查詢多個查詢,我也問這裏如果我如何使用不同的錯誤信息。

+0

「請不要說我應該用‘我開始瞭解它,因爲我將要改變它,儘快PDO’或改進的MySQLi 「 - 你已經在使用mysqli +準備好的語句,所以它總是很好 – Philipp

+0

感謝評論,但是,我正在尋找像」教程「或解釋它是如何以及它是如何工作的,我可以使用單個查詢只是爲了檢查用戶名或密碼? (但如果需要的話,我可以執行多個查詢) – virtualAnon

+1

您也可以只使用一個查詢,只需在要檢查的每個字段的where子句中使用OR或。 '用戶名=?或電子郵件=?或x = y' – Philipp

回答

2

更改查詢到這個(您可以添加更多,如果你想): -

$sql='select username from users where username=? OR email=?'; 
        $stmt=$mysqli->prepare($sql); 
        $stmt->bind_param('ss',$username,$email); 
        $stmt->execute(); 

應該檢查,如果任何一個用戶名或電子郵件存在,它將返回true。

UPDATE(根據您的要求): -

$sql='select email from users where email=?'; 
$stmt=$mysqli->prepare($sql); 
$stmt->bind_param('s',$email); 
$stmt->execute(); 
$stmt->bind_result($found); 
$stmt->fetch(); 

if($found){ 
    // Email registered before! 
$error = true; // To prevent double checking 

// You can use the $error or this array error. 
// $error[] = "Email Found, please register using another email"; 
} 

if (!$error || count($error) == 0) { 
$sql='select username from users where username=?'; 
$stmt=$mysqli->prepare($sql); 
$stmt->bind_param('s',$username); 
$stmt->execute(); 
$stmt->bind_result($found); 
$stmt->fetch(); 

if($found){ 
    // Username registered before! 
} 

} 
+0

因此,代碼基本上選擇「用戶名」。但是,如果沒有選擇電子郵件,這會工 – virtualAnon

+0

沒有,但把OR會解決您的問題 – MuthaFury

+0

感謝您的代碼,它完全有效,但最後一個問題:如何使用「不同」的錯誤消息的兩個錯誤? – virtualAnon

相關問題