mysql_affected_rows

(PHP 3, PHP 4 )

mysql_affected_rows --  Retourne le nombre de lignes affectées lors de la dernière requête SQL

Description

int mysql_affected_rows ( [resource link_identifier])

mysql_affected_rows() retourne le nombre de lignes affectées lors de la dernière requête INSERT, UPDATE ou DELETE sur le serveur associé à l'identifiant de connexion. Si cet identifiant n'est pas précisé, mysql_affected_rows() utilise la dernière connexion ouverte.

Note : Si vous utilisez les transactions, vous devez appeler mysql_affected_rows() après votre INSERT, UPDATE, ou DELETE et non après la validation.

Si la dernière requête était un DELETE sans clause WHERE, tous les enregistrements ont été effacés, mais mysql_affected_rows() va retourner 0.

mysql_affected_rows() n'est pas possible après un SELECT, car elle ne fonctionne qu'après des commandes qui modifient les enregistrements. Pour connaître le nombre de lignes retournées par un SELECT, utilisez mysql_num_rows().

Si la dernière requête a échoué, mysql_affected_rows() retourne -1.

Exemple 1. Requête SQL Delete

<?php
    
/* connexion &agrave; la base */
    
mysql_pconnect("localhost", "mysql_user", "mysql_password") or
        die(
"Impossible de se connecter : " . mysql_error());

    
/* Ceci devrait retourner le nombre correct de lignes effac&eacute;es */
    
mysql_query("DELETE FROM mytable WHERE id < 10");
    
printf ("Records deleted: %d\n", mysql_affected_rows());

    
/* Sans la clause WHERE, il retourne 0 */
    
mysql_query("DELETE FROM mytable");
    
printf ("Lignes effac&eacute;es : %d\n", mysql_affected_rows());
?>

Le script ci-dessus devrait afficher :
Lignes effac&eacute;es : 10
Lignes effac&eacute;es : 0

Exemple 2. Requête SQL Update

<?php
    
/* connexion &agrave; la base */
    
mysql_pconnect("localhost", "mysql_user", "mysql_password") or
        die(
"Impossible de se connecter : " . mysql_error());

    
/* Requ&ecirc;te de modification Update */
    
mysql_query("UPDATE mytable SET used=1 WHERE id < 10");
    
printf ("Lignes modifi&eacute;es : %d\n", mysql_affected_rows());
mysql_query("COMMIT");
?>

Le script ci-dessus devrait afficher :
Lignes modifi&eacute;es : 10

Voir aussi mysql_num_rows() et mysql_info().