Forum und email

mysql_affected_rows

(PHP 4, PHP 5, PECL mysql:1.0)

mysql_affected_rows — Numarul de randuri afectate de ultima operatie MySQL

Descriere

int mysql_affected_rows ([ resource $ link_identifier ] )

mysql_affected_rows() intoarce numarul de randuri afectate de ultima cerere de tip INSERT, UPDATE sau DELETE asociata cu link_identifier . Daca nu se specifica un identificator de conectare, se foloseste implicit ultima conexiune creata cu mysql_connect().

Notă: Daca folositi tranzactii, trebuie sa apelati mysql_affected_rows() imediat dupa INSERT, UPDATE, sau DELETE, nu dupa commit.

Daca ultima cerere a fost DELETE fara clauza WHERE, toate randurile vor fi sterse din tabel dar functia va returna zero.

Notă: Daca folositi UPDATE, MySQL nu va modifica coloanele unde valorile noi sunt egale/identice cu valorile noi. Astfel exista posibilitatea ca mysql_affected_rows() sa nu returneze numarul exact de randuri care indeplineau conditiile, ci numai randurile care au fost efectiv modificate.
Cererile de tip REPLACE intai sterg randurile cu aceeasi cheie primara si apoi introduc un rand nou. Aceasta functie va returna numarul de randuri sterse plus numarul de randuri introduse.

Pentru a gasi numarul de randuri in intoarse ca raspuns la o cerere de tip SELECT, este recomandat sa folositi mysql_num_rows().

Daca ultima cerere a esuat, aceasta functie va intoarce -1.

Example#1 Solicitare DELETE

<?php
/* conectare la baza de date */
$link mysql_connect('localhost''mysql_user''mysql_password');
if (!
$link) {
    die(
'Nu am putut stabili o conexiune: ' mysql_error());
}
mysql_select_db('mydb');

/* acest cod ar trebui sa intoarca numarul corect de randuri sterse */
mysql_query('DELETE FROM mytable WHERE id < 10');
printf("Inregistrari sterse: %d\n"mysql_affected_rows());

/* cu o clauza care nu valideaza niciodata, va intoarce 0 */
mysql_query('DELETE FROM mytable WHERE 0');
printf("Inregistrari sterse: %d\n"mysql_affected_rows());
?>

Exemplul de mai sus va avea urmatorul rezultat:

Inregistrari sterse: 10
Inregistrari sterse: 0

Example#2 Solicitare UPDATE

<?php
/* conectare la baza de date */
mysql_connect("localhost""mysql_user""mysql_password") or
    die(
'Nu am putut stabili o conexiune: ' mysql_error());
mysql_select_db("mydb");

mysql_query("UPDATE mytable SET used=1 WHERE id < 10");
printf ("Inregistrari modificate: %d\n"mysql_affected_rows());
mysql_query("COMMIT");
?>

Exemplul de mai sus va avea urmatorul rezultat:

Inregistrari modificate: 10

Va mai recomandam: mysql_num_rows(), si mysql_info().