我有以下脚本,但它没有按我的预期工作:

$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";
}

它似乎总是返回1美元的strCount
在表1中,我只有一行用户名是username1。如果发布的值是username1,那么$strCount应该是1,但是由于某种原因,如果发布的值是username2,那么$strCount仍然是1。
有人知道我做错了什么吗?

最佳答案

你在数数两次!count()和rowcount()。
rowCount()返回受相应PDOStatement对象执行的最后一条DELETE、INSERT或UPDATE语句影响的行数。
试着定期取

$count = $db->query("select count(*) from table")->fetch();

09-08 05:17