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
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