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 umSELECT
demonstração.
Em vez disso, usePDO::query()
para emitir umSELECT COUNT(*)
instrução com os mesmos predicados que seuSELECT
pretendido 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.