Manuale PHP
Indietro |  | Avanti

# 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().

Indietro | Partenza | Avanti
MySQL Functions | Risali | mysql_change_user