我已經問過這個問題了(但是有另外一個問題)。請參閱此thread,看看我在說什麼。請不要說我應該使用PDO或改進MySQLi,因爲一旦我開始瞭解它,我就會改變它。PHP - 檢查用戶名或電子郵件是否已被使用
如果我想讓其他字段「已被檢查」,如果它已經存在,該怎麼辦?我的代碼工作正常,但它只是用戶名,我也想檢查電子郵件地址是否已被採取或其他領域。
我的代碼:
這不是一個重複的問題,在這裏的問題是如何將其簽入單個查詢不多個查詢,我也問這裏如果我如何使用不同的錯誤信息。
我已經問過這個問題了(但是有另外一個問題)。請參閱此thread,看看我在說什麼。請不要說我應該使用PDO或改進MySQLi,因爲一旦我開始瞭解它,我就會改變它。PHP - 檢查用戶名或電子郵件是否已被使用
如果我想讓其他字段「已被檢查」,如果它已經存在,該怎麼辦?我的代碼工作正常,但它只是用戶名,我也想檢查電子郵件地址是否已被採取或其他領域。
我的代碼:
這不是一個重複的問題,在這裏的問題是如何將其簽入單個查詢不多個查詢,我也問這裏如果我如何使用不同的錯誤信息。
更改查詢到這個(您可以添加更多,如果你想): -
$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!
}
}
因此,代碼基本上選擇「用戶名」。但是,如果沒有選擇電子郵件,這會工 – virtualAnon
沒有,但把OR會解決您的問題 – MuthaFury
感謝您的代碼,它完全有效,但最後一個問題:如何使用「不同」的錯誤消息的兩個錯誤? – virtualAnon
「請不要說我應該用‘我開始瞭解它,因爲我將要改變它,儘快PDO’或改進的MySQLi 「 - 你已經在使用mysqli +準備好的語句,所以它總是很好 – Philipp
感謝評論,但是,我正在尋找像」教程「或解釋它是如何以及它是如何工作的,我可以使用單個查詢只是爲了檢查用戶名或密碼? (但如果需要的話,我可以執行多個查詢) – virtualAnon
您也可以只使用一個查詢,只需在要檢查的每個字段的where子句中使用OR或。 '用戶名=?或電子郵件=?或x = y' – Philipp