mysql_affected_rows

(PHP 3, PHP 4 , PHP 5)

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

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 link_identifier. Si link_identifier 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.

Note : Lorsque vous utilisez UPDATE, MySQL ne mettera pas à jour les colonnes si la nouvelle valeur est identique à l'ancienne. Cela fait que mysql_affected_rows() ne représentera pas forcément le nombre de lignes correspondantes mais plutôt le nombre de lignes qui ont été réellement affectées par la requête.

La requête REPLACE commence par effacer les enregistrements possédant la même clé primaire et ensuite, insert les nouveaux enregistrements. Cette fonction retourne le nombre d'enregistrements effacés ainsi que le nombre d'enregistrements insérés.

Pour recupérer le nombre de lignes retournées par un SELECT, il est également possible d'utiliser la fonction mysql_num_rows().

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

Exemple 1. Requête SQL Delete

<?php
    
/* connexion à 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é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ées : %d\n", mysql_affected_rows());
?>

Le script ci-dessus devrait afficher :
Lignes effacées : 10
Lignes effacées : 0

Exemple 2. Requête SQL Update

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

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

Le script ci-dessus devrait afficher :
Lignes modifiées : 10

Voir aussi mysql_num_rows() et mysql_info().