Zgodnie z instrukcją, istnieje PDOStatement->rowCount
metoda; ale nie należy go używać (cytuję) :
W przypadku większości baz danych PDOStatement::rowCount() nie zwraca liczby wierszy, których dotyczy SELECT oświadczenie.
Zamiast tego użyj PDO::query() wystawić SELECT COUNT(*) instrukcja z takimi samymi predykatami, jak zamierzony SELECT oświadczenie, a następnie użyj PDOStatement::fetchColumn() aby pobrać liczbę wierszy, które zostaną zwrócone.
Twoja aplikacja może wtedy wykonać prawidłowe działanie.
Jeśli masz już zestaw rekordów i chcesz wiedzieć, ile jest w nim wierszy, będziesz musiał pobrać dane za pomocą jednego z fetch* metody; i użyj licznika - tak jak sugerowałeś.