Verificare il numero di record riscontrati o modificati dalla query

Possiamo, senza necessariamente scorrere tutto il record-set, avere indicazioni sul numero di record che la nostra query ha estratto o modificato utilizzando la funzione mysql_num_rows($result).

Essa ritorna, solamente nel caso di query di tipo SELECT, il numero di record che sono stati estratti:
$result = mysql_query("SELECT * FROM prodotti");
$num_prodotti = mysql_num_rows($result);

$num_prodotti conterrà il numero totale di prodotti presenti nel database.
Si noti come lo stesso risultato si potrebbe ottenere abbassandosi di livello e facendo effettuare il conteggio direttamente al database:
$result = mysql_query("SELECT COUNT(*) AS tot, * FROM prodotti");
$array = mysql_fetch_array($result);
$num_prodotti = $array['tot'];

$num_prodotti conterrà nuovamente il numero totale di prodotti presenti nel database.

Nel caso invece di statement SQL che modificano in qualche modo i record presenti nella nostra tabella, ad esempio con
istruzioni di INSERT, UPDATE e di DELETE, per conoscere il numero di record "toccati" si utilizza la funzione
mysql_affected_rows()
Si porga la dovuta attenzione però ad alcune eccezioni che potrebbe indurre ad errori difficilmente debuggabili:
- nel caso in cui la query sia del tipo DELETE FROM tabella, quindi una cancellazione di tutti i record presenti in tabella senza nessun vincolo di WHERE, la funzione ritornerà sempre e comunque 0.
- quando si effettua uno statement SQL di update, il motore MySQL non "tocca" i record che già contengono lo stesso valore che si vorrebbe inserire, quindi potrebbe esserci il caso in cui mysql_affected_rows() non ritorni esattamente il numero di record riscontrati dalla query ma solo quelli effettivamente modificati.

Privacy Policy