2011-11-29 140 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 ...