mysql_affected_rows

(PHP 4, PHP 5)

mysql_affected_rowsObține numărul de rânduri afectate de precedenta operațiune MySQL

Avertizare

Această extensie a devenit învechită în PHP 5.5.0 și a fost eliminată în PHP 7.0.0. În locul ei trebuie utilizată extensia MySQLi sau PDO_MySQL. Accesați de asemenea ghidul MySQL: selectarea unei API și FAQ asociat pentru informații suplimentare. Variante alternative pentru această funcție includ:

Descrierea

mysql_affected_rows ([ resource $link_identifier = NULL ] ) : int

Obține numărul de rânduri afectate de ultima interpelare INSERT, UPDATE, REPLACE sau DELETE asociată cu link_identifier.

Parametri

link_identifier

Conexiunea MySQL. Dacă identificatorul legăturii nu este specificat, se presupune că este ultima legătură deschisă cu ajutorul mysql_connect(). Dacă nu este găsită nici o astfel de legătură, se va încerca crearea uneia prin apelul mysql_connect () fără argumente. În caz că nici o conexiune nu este găsită sau stabilită, se va genera o eroare de nivelul E_WARNING.

Valorile întoarse

Întoarce numărul de rânduri afectate în caz de succes și -1 dacă ultima interpelare a eșuat.

Dacă ultima interpelare a fost o interpelare DELETE fără o clauză WHERE, atunci toate rândurile din tabel au fost eliminate, dar această funcție va întoarce zero în cazul versiunilor MySQL înainte de 4.1.2.

La utilizarea UPDATE, MySQL nu va reînnoi coloanele unde valoarea nouă coincide cu cea veche. Aceasta crează posibilitatea că mysql_affected_rows() nu va coincide cu numărul de rânduri ce se potrivesc condiției de selectare, dar va fi doar numărul de rânduri ce au fost direct afectate de interpelare.

Interpelarea REPLACE întâi elimină înregistrarea cu aceeași cheie primară, apoi inserează noua înregistrare. Această funcție întoarce numărul înregistrărilor eliminate plus numărul înregistrărilor inserate.

În cazul interpelărilor de tip "INSERT ... ON DUPLICATE KEY UPDATE", valoarea întoarsă va fi 1 dacă a fost efectuată inserare, sau 2 dacă a fost actualizat un rând existent.

Exemple

Example #1 Exemplu mysql_affected_rows()

<?php
$link 
mysql_connect('localhost''mysql_user''mysql_password');
if (!
$link) {
    die(
'A eșuat conectarea: ' mysql_error());
}
mysql_select_db('mydb');

/* aceasta ar trebui să întoarcă numerele corecte ale înregistrărilor eliminate */
mysql_query('DELETE FROM mytable WHERE id < 10');
printf("Înregistrări eliminate: %d\n"mysql_affected_rows());

/* cu o clauză WHERE care nici o dată nu este adevărată, aceasta ar trebui să întoarcă 0 */
mysql_query('DELETE FROM mytable WHERE 0');
printf("Înregistrări eliminate: %d\n"mysql_affected_rows());
?>

Exemplul de mai sus va afișa ceva similar cu:

Înregistrări eliminate: 10
Înregistrări eliminate: 0

Example #2 Exemplu mysql_affected_rows() utilizând tranzacții

<?php
$link 
mysql_connect('localhost''mysql_user''mysql_password');
if (!
$link) {
    die(
'A eșuat conectarea: ' mysql_error());
}
mysql_select_db('mydb');

/* Reînnoiește înregistrările */
mysql_query("UPDATE mytable SET used=1 WHERE id < 10");
printf ("Înregistrări reînnoite: %d\n"mysql_affected_rows());
mysql_query("COMMIT");
?>

Exemplul de mai sus va afișa ceva similar cu:

Înregistrări reînnoite: 10

Note

Notă: Tranzacții

Dacă utilizați tranzacții trebuie să apelați mysql_affected_rows() după interpelarea INSERT, UPDATE sau DELETE, și nu după COMMIT.

Notă: Interpelări SELECT

Pentru a căpăta numărul de rânduri întoarse de un SELECT, utilizați mysql_num_rows().

Notă: Cheile externe în cascadă

mysql_affected_rows() nu numără înregistrările afectate implicit prin utilizarea ON DELETE CASCADE și/sau ON UPDATE CASCADE în constrângerile cu chei externe.

A se vedea și