如何使用PDO获取mysql_num_rows


How to get mysql_num_rows with PDO?

如何轻松获取"SELECT *"SQL查询返回的行数?

function valid_credentials($db,$name,$pw) {
    try {
    $sth = $db->prepare("SELECT * FROM ib_members WHERE name=:val AND pw=:val2");
    $sth->bindValue(":val",$name);
    $sth->bindValue(":val2",$pw);   
    $sth->execute();

    $numrows = $sth->fetchColumn();
    return $numrows;
    } catch (PDOException $e) {
        return $e->getMessage();
    }
}

它返回14,这绝对不是返回的行数,而是第一行的ID。

对于DELETEINSERTUPDATE语句,请使用PDOStatement::rowCount()。

对于SELECT语句,请在while( $sth->fetch() )循环中手动对行进行计数(例如,如果计数超过某个阈值,则可以将break从循环中取出),或者执行单独的查询以使数据库返回行计数(例如SELECT COUNT(*) FROM table WHERE column = ?)。