What are the differences between using fetchAll() with count() and rowCount() with PDO Prepared Statements in PHP?

When using PDO Prepared Statements in PHP, the difference between using fetchAll() with count() and rowCount() lies in how they retrieve and handle the data. fetchAll() retrieves all rows from a result set as an array, which can then be counted using count(). rowCount(), on the other hand, directly returns the number of rows affected by the last SQL statement. If you need to count the number of rows returned by a SELECT query, it is more efficient to use fetchAll() with count().

// Using fetchAll() with count()
$stmt = $pdo->prepare("SELECT * FROM users WHERE status = :status");
$stmt->execute(['status' => 'active']);
$rows = $stmt->fetchAll();
$numRows = count($rows);
echo "Number of active users: " . $numRows;

// Using rowCount()
$stmt = $pdo->prepare("SELECT * FROM users WHERE status = :status");
$stmt->execute(['status' => 'active']);
$numRows = $stmt->rowCount();
echo "Number of active users: " . $numRows;