2011-11-29 141 views
5

如何使用PDO檢查用戶名是否存在?我只需要知道一個布爾真(存在)或假(不)。我最初的地方設立了,但我不能確定爲行計數下一步使用PHP PDO檢查用戶名是否存在

$sthandler = $dbhandler->prepare('SELECT username FROM userdb WHERE username=? LIMIT 1'); 
$sthandler->execute(array('username')); 
// ... What's next? 
+0

你是要去想算,從查詢拿出行的數量(檢查湯姆的答案)。如果它是0,那麼用戶不存在,如果它是1或更多,他會這樣做。一個提示:我通常不會限制查詢,如果用戶名存在多於一次,我可以拋出一個錯誤,這意味着有東西被竊聽或可能的入侵者重複帳戶... – HTDutchy

+0

@ s4uadmin - 你必須在數據庫中執行一定數量的數據完整性權限,例如具有獨特的索引。否則,你會瘋狂測試所有可能的損壞數據。 –

回答

9

檢查:

if ($sthandler->rowCount() > 0) { 
    // do something here 
} 
+0

謝謝,夥計。正是我需要的。最終代碼:'if(!$ sthandler-> rowCount())throw new invalidUserException();' – enchance

+0

我有一個問題,請賜教,例如沒有記錄存在計數將是'0''0'不大於'0'所以沒有什麼會發生應該是'$ sthandler-> rowCount()<1',所以當用戶存在時它不會做任何事情來避免重複,如果不存在,它會繼續? –

2

只要抓住該行:

if($row = $sthandler->fetch()){ 
    // User exists: read its details here 
}else{ 
    // User does not exist 
} 
2
$username_exists = (bool) $sthandler->fetchColumn(); 

注你甚至可以優化查詢,因爲實際上你不需要選擇用戶名。

SELECT username FROM userdb ... 

成爲

SELECT 1 FROM userdb ...