如何使用PDO检查用户名是否存在?我只需要知道一个布尔真(存在)或假(不)。我最初的地方设立了,但我不能确定为行计数下一步使用PHP PDO检查用户名是否存在
$sthandler = $dbhandler->prepare('SELECT username FROM userdb WHERE username=? LIMIT 1');
$sthandler->execute(array('username'));
// ... What's next?
如何使用PDO检查用户名是否存在?我只需要知道一个布尔真(存在)或假(不)。我最初的地方设立了,但我不能确定为行计数下一步使用PHP PDO检查用户名是否存在
$sthandler = $dbhandler->prepare('SELECT username FROM userdb WHERE username=? LIMIT 1');
$sthandler->execute(array('username'));
// ... What's next?
检查:
if ($sthandler->rowCount() > 0) {
// do something here
}
谢谢,伙计。正是我需要的。最终代码:'if(!$ sthandler-> rowCount())throw new invalidUserException();' – enchance
我有一个问题,请赐教,例如没有记录存在计数将是'0''0'不大于'0'所以没有什么会发生应该是'$ sthandler-> rowCount()<1',所以当用户存在时它不会做任何事情来避免重复,如果不存在,它会继续? –
只要抓住该行:
if($row = $sthandler->fetch()){
// User exists: read its details here
}else{
// User does not exist
}
$username_exists = (bool) $sthandler->fetchColumn();
注你甚至可以优化查询,因为实际上你不需要选择用户名。
SELECT username FROM userdb ...
成为
SELECT 1 FROM userdb ...
你是要去想算,从查询拿出行的数量(检查汤姆的答案)。如果它是0,那么用户不存在,如果它是1或更多,他会这样做。一个提示:我通常不会限制查询,如果用户名存在多于一次,我可以抛出一个错误,这意味着有东西被窃听或可能的入侵者重复帐户... – HTDutchy
@ s4uadmin - 你必须在数据库中执行一定数量的数据完整性权限,例如具有独特的索引。否则,你会疯狂测试所有可能的损坏数据。 –