从数据库返回计数

| 我有以下脚本无法正常运行,因为我期望它可以正常工作:
$DBH = new PDO( \"mysql:host=localhost;dbname=database_name\", \"user\", \"pass\" );
$DBH -> setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );

$STH = $DBH -> prepare( \"select count( users_id ) from table1 where username = :username\" );

$STH -> bindParam( \':username\', $_POST[\'username\'], PDO::PARAM_STR, 100 );

$STH -> execute();

$strCount = $STH -> rowCount();

if( $strCount == 1 ) {
    echo $strCount;
    echo \"user has already registered, do nothing\";
} elseif ( $strCount == 0 ) {
    echo $strCount;
    echo \"user has not registered, insert into db\";
} else {
    echo $strCount;
    echo \"something is wrong, should only ever be 0 or 1\";
}
它似乎总是为$ strCount返回1 在表1中,我只有1行,其中用户名是username1。如果发布的值为username1,则我希望$ strCount为1,但是由于某种原因,如果发布的值为username2,我仍将$ strCount设为1。 有人知道我在做什么错吗?     
已邀请:
你在数两次! count()和rowcount()。 PDOStatement :: rowCount()返回受相应PDOStatement对象执行的最后一个DELETE,INSERT或UPDATE语句影响的行数。 尝试进行常规获取
$count = $db->query(\"select count(*) from table\")->fetch(); 
    
您正在查询中执行COUNT(),这意味着您将只返回单行,其中包含记录计数的一个字段。 您必须检索该行和字段,然后根据该值进行决策。     
count(blah)将返回包含count值的一行。我认为您无需执行rowCount(),而是需要在执行并从那里读取值之后调用fetch(..)。这基于PHP文档。 http://www.php.net/manual/zh/pdostatement.fetch.php 我不是PHP开发人员,所以我不想给您不好的代码。     

要回复问题请先登录注册