Domanda

Di recente ho iniziato a lavorare su un nuovo progetto usando PHP5 e per questo voglio usare le loro classi PDO. Il problema è che il driver MySQL PDO non supporta rowCount (), quindi non c'è modo di eseguire una query e quindi ottenere il numero di righe interessate o restituite, il che è un grosso problema per quanto mi riguarda. Mi chiedevo se qualcun altro ha già affrontato questo problema e cosa hai fatto per aggirare il problema. Dover fare un fetch () o fetchAll () per verificare se qualche riga è stata interessata o restituita mi sembra un hack, preferirei semplicemente fare $ stmt- > numRows () o qualcosa di simile.

È stato utile?

Soluzione

Puoi inviare una query SELECT FOUND_ROWS () subito dopo la query SELECT originale per ottenere il conteggio delle righe.

$pdo->query("SELECT * FROM users");
$foundRows = $pdo->query("SELECT FOUND_ROWS()")->fetchColumn();

Vedi anche: Documenti MySQL su FOUND_ROWS ( )

Altri suggerimenti

Per quelli di voi che utilizzano le procedure memorizzate MySQL, questa soluzione non è realmente fattibile. Quello che suggerirei di fare è che la procedura memorizzata crei due set di righe. Il primo conterrà una riga e una colonna, contenenti il ??numero di record. Il secondo sarà il recordset che userete per recuperare quel numero di righe.

Il numero di righe illimitate può essere un SELECT COUNT (*) con la stessa identica clausola WHERE del secondo set di righe senza il LIMIT / clausole OFFSET .

Un'altra idea potrebbe essere quella di creare una tabella temporanea. Usa la tua istruzione SELECT per popolare la tabella temporanea. Quindi puoi usare SELECT COUNT (*) FROM tmpTable per il tuo primo set di righe e SELECT * FROM tmpTable per il tuo secondo.

Questa domanda si basa su diversi presupposti falsi e una dichiarazione obsoleta.

Prima di tutto, non confondere il numero di interessate e selezionate . Il PDO ha sostenuto il primo anche nel '09.

Parlando del numero di righe restituite dall'istruzione SELECT - semplicemente non hai bisogno di quel numero. I dati che hai sono sufficienti.

E sì, al giorno d'oggi rowCount () supporta anche il numero di righe selezionate da mysql. Ma ancora una volta - non è necessario quel numero in un'applicazione web media comunque.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top