mysql_affected_rows

(PHP 4, PHP 5)

mysql_affected_rows Retourne le nombre de lignes affect�es lors de la derni�re op�ration MySQL

Description

int mysql_affected_rows ([ resource $link_identifier ] )

Retourne le nombre de lignes affect�es lors de la derni�re requ�te INSERT, UPDATE, REPLACE ou DELETE avec link_identifier .

Liste de param�tres

link_identifier

La connexion MySQL. S'il n'est pas sp�cifi�, la derni�re connexion ouverte avec la fonction mysql_connect() sera utilis�e. Si une telle connexion n'est pas trouv�e, la fonction tentera d'ouvrir une connexion, comme si la fonction mysql_connect() avait �t� appel�e sans argument. Si aucune connexion n'est trouv�e ou �tablie, une alerte E_WARNING est g�n�r�e.

Valeurs de retour

Retourne le nombre de lignes affect�es en cas de succ�s et -1 si la derni�re requ�te a �chou�.

Si la derni�re requ�te �tait un DELETE sans clause WHERE, tous les enregistrements ont �t� effac�s, mais cette fonction va retourner 0 avec les versions de MySQL ant�rieures � 4.1.2.

Lorsque vous utilisez UPDATE, MySQL ne mettra pas � jour les colonnes si la nouvelle valeur est identique � l'ancienne. Il est donc possible que mysql_affected_rows() ne repr�sente 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.

Exemples

Exemple #1 Exemple avec mysql_affected_rows()

<?php
$link 
mysql_connect('localhost''mysql_user''mysql_password');
if (!
$link) {
     die(
'Impossible de se connecter : ' mysql_error());
}
mysql_select_db('mydb');

/* Ceci devrait retourner le nombre correct de lignes effac�es */
mysql_query('DELETE FROM mytable WHERE id < 10');
printf("Lignes effac�es : %d\n"mysql_affected_rows());

/* avec la clause where qui n'est jamais vraie, on devrait obtenir 0 */
mysql_query('DELETE FROM mytable WHERE 0');
printf("Lignes effac�es : %d\n"mysql_affected_rows());
?>

L'exemple ci-dessus va afficher quelque chose de similaire � :

Lignes effac�es : 10
Lignes effac�es : 0

Exemple #2 Exemple avec mysql_affected_rows() en utilisant les transactions

<?php
$link 
mysql_connect('localhost''mysql_user''mysql_password');
if (!
$link) {
     die(
'Impossible de se connecter : ' mysql_error());
}
mysql_select_db('mydb');

/* Mise � jour des lignes */
mysql_query("UPDATE mytable SET used=1 WHERE id < 10");
printf ("Lignes modifi�es : %d\n"mysql_affected_rows());
mysql_query("COMMIT");
?>

L'exemple ci-dessus va afficher quelque chose de similaire � :

Lignes modifi�es : 10

Notes

Note: Transactions
Si vous utilisez des transactions, vous devez appeler mysql_affected_rows() apr�s votre requ�te INSERT, UPDATE ou DELETE et non apr�s le COMMIT.

Note: Requ�tes SELECT
Pour obtenir le nombre de lignes retourn�es par un SELECT, il est possible d'utiliser mysql_num_rows().

Voir aussi

  • mysql_num_rows() - Retourne le nombre de lignes d'un r�sultat MySQL
  • mysql_info() - Lit des informations � propos de la derni�re requ�te MySQL