A me non sembra abbiano fatto un bel lavoro, mi piacerebbe discuterne con voi, se vi va.
Punto 1.
Sembra mancare totalmente un metodo per sapere il numero di righe restituite da una SELECT, cioè il corrispondente del mysql_num_rows().
Il metodo rowCount() restituisce il numero di affected_rows() (tranne in alcuni casi, dove "some databases may return the number of rows returned", quindi non è affidabile per questa funzionalità).
Punto 2.
Manca un metodo per eseguire SELECT "buffered" (quelle eseguite con mysql_query() ) senza passare per prepare() -> execute().
Infatti:
- la funzione exec() restituisce le affected_rows e non un resultSet, quindi è inutilizzabile per le SELECT;
- la funzione query() fa in pratica il corrispondente di una mysql_unbuffered_query() in quanto "If you do not fetch all of the data in a result set before issuing your next call to PDO::query(), your call may fail."
Quindi non si possono fare due SELECT diverse una dietro l'altra senza prima "scaricare" l'intero resultSet della prima.
- l'unica soluzione rimasta per una "buffered query" sembra essere quella di usare prepare() e poi execute(), ma il vantaggio principale di questi metodi si presenta quando va ripetuta una stessa query più volte (con parametri diversi). Per eseguire query diverse in sequenza io la trovo molto sconveniente: primo perché la mia query può non avere parametri di cui fare l'escape, secondo perché essere costretti a due chiamate di funzione per ogni query mi sembra una cosa inutilmente macchinosa, terzo perché il dialogo client/server (dove il client è il php e il server il DBMS) è inutilmente appesantito.
A me sembrano due mancanze importanti, se non ci mettono una pezza è assai probabile che io eviti di usarlo per questi due motivi.
Che ne pensate?