mysql_affected_rows

(PHP 3, PHP 4 , PHP 5)

mysql_affected_rows -- Ottiene il numero di righe coinvolte nelle precedenti operazioni MySQL

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:
Record aggiornati: 10

Vedere anche: mysql_num_rows(), mysql_info().