Secondo il manuale, esiste un PDOStatement->rowCount
metodo; ma non dovrebbe essere usato (citando) :
Per la maggior parte dei database, PDOStatement::rowCount() non restituisce il numero di righe interessate da un SELECT dichiarazione.
Utilizza invecePDO::query() per emettere un SELECT COUNT(*) dichiarazione con gli stessi predicati del SELECT previsto istruzione, quindi utilizzarePDOStatement::fetchColumn() per recuperare il numero di righe che verranno restituite.
L'applicazione può quindi eseguire l'azione corretta.
Se hai già un recordset e vuoi sapere quante righe ci sono, dovrai recuperare i dati, usando uno dei fetch* metodi; e usa il conteggio, come hai suggerito.