使用PHP PDO检查用户名是否存在

使用PHP PDO检查用户名是否存在,php,mysql,pdo,Php,Mysql,Pdo,如何使用PDO检查用户名是否存在?我只需要知道一个布尔值真(存在)或假(不存在)。我已设置了初始部件,但不确定下一步要做什么 $sthandler = $dbhandler->prepare('SELECT username FROM userdb WHERE username=? LIMIT 1'); $sthandler->execute(array('username')); // ... What's next? 检查行计数: if ( $sthandler->row

如何使用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( $row = $sthandler->fetch() ){
    // User exists: read its details here
}else{
    // User does not exist
}
请注意,您甚至可以稍微优化查询,因为实际上您不需要选择用户名

SELECT username FROM userdb ...
变成

SELECT 1 FROM userdb ...

您需要计算查询中出现的行数(检查tom的答案)。如果是0,则用户不存在;如果是1或更多,则用户不存在。一个提示:我通常不会限制查询,如果用户名存在的次数超过我可以抛出错误的次数,这意味着有什么东西被窃听或可能的入侵者复制了帐户…@s4uadmin-您必须在数据库中强制执行一定量的数据完整性,例如,使用唯一索引。否则,你会得到疯狂的测试所有可能损坏的数据。谢谢,伙计。正是我需要的。最后一个代码:
if(!$sthandler->rowCount())抛出新的invalidUserException()
我有一个问题,请告诉我,例如,没有记录存在计数将
0
0
不大于
0
,因此如果它是
$sthandler->rowCount()?
SELECT 1 FROM userdb ...