微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从数据库返回计数

如何解决从数据库返回计数

| 我有以下脚本无法正常运行,因为我期望它可以正常工作:
$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开发人员,所以我不想给您不好的代码。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。