Descrizione
int
mysql_affected_rows ( [resource identificativo_connessione] )
mysql_affected_rows() restituisce il numero
di righe coinvolte nell'ultima query INSERT, UPDATE o DELETE
associata a identificativo_connessione. Se l'identificativo di
connessione non è specificato, viene considerata l'ultima connessione aperta con
mysql_connect().
Nota:
Se sono usate le transazioni, è necessario richiamare
mysql_affected_rows() dopo le query INSERT,
UPDATE, o DELETE e non dopo il commit.
Se l'ultima query era una query DELETE senza clausola WHERE, tuti
i record saranno cancellati dalla tabella ma questa
funzione restituirà zero.
Nota:
Usando UPDATE, MySQL non aggiornerà le colonne nelle quali il nuovo
valore è uguale al vecchio valore. Questo crea la possibilità
che mysql_affected_rows() può non uguagliare realmente
il numero di righe corrispondenti ma solo il numero di righe
effettivamente coinvolte dalla query.
mysql_affected_rows() non funziona con
l'istruzione SELECT ma solo con le istruzioni che modificano i record. Per
ricavare il numero di righe restituite da SELECT, usare
mysql_num_rows().
Se l'ultima query fallisce, questa funzione restituisce -1.
Esempio 1. Query di eliminazione
<?php /* connessione al database */ mysql_pconnect("localhost", "utente_mysql", "password_mysql") or die("Connessione non riuscita: " . mysql_error());
/* questo dovrebbe restituire il numero corretto di record eliminati */ mysql_query("DELETE FROM mia_tabella WHERE id < 10"); printf ("Records eliminati: %d\n", mysql_affected_rows());
/* senza la clausola WHERE nell'istruzione DELETE, dovrebbe restituire 0 */ mysql_query("DELETE FROM mia_tabella"); printf ("Record eliminati: %d\n", mysql_affected_rows()); ?>
|
L'esempio riportato sopra dovrebbe produrre il seguente output:
Records eliminati: 10
Records eliminati: 0 |
|
Esempio 2. Query di aggiornamento
<?php /* connessione al to database */ mysql_pconnect("localhost", "utente_mysql", "password_mysql") or die("Connessione non riuscita: " . mysql_error());
/* aggiornamento dei record */ mysql_query("UPDATE mia_tabella SET used=1 WHERE id < 10"); printf ("Record aggiornati: %d\n", mysql_affected_rows()); mysql_query("COMMIT"); ?>
|
L'esempio riportato sopra dovrebbe produrre il seguente output:
|
Vedere anche: mysql_num_rows(),
mysql_info().