De acordo com o manual, existe um
PDOStatement->rowCount
método; mas não deve ser usado (citando) :
Para a maioria dos bancos de dados,PDOStatement::rowCount()não retorna o número de linhas afetadas por umSELECTdemonstração.
Em vez disso, usePDO::query()para emitir umSELECT COUNT(*)instrução com os mesmos predicados que seuSELECTpretendido declaração, então usePDOStatement::fetchColumn()para recuperar o número de linhas que serão retornadas.
Seu aplicativo pode então realizar a ação correta.
Se você já tem um conjunto de registros e quer saber quantas linhas há nele, você terá que buscar os dados, usando um dos métodos
fetch* métodos; e use count -- como você sugeriu.