mysql_affected_rows

(PHP 3, PHP 4 , PHP 5)

mysql_affected_rows -- Az előző MySQL műveletben érintett sorok számát adja meg

Leírás

int mysql_affected_rows ( [resource link_identifier] )

A mysql_affected_rows() függvény az előző link_identifier-rel azonosított kapcsolatban kiadott INSERT, UPDATE vagy DELETE kérésben érintett sorok számát adja vissza. Ha nem adsz meg kapcsolat-azonosítót, akkor az utolsó mysql_connect()-tel megnyitott kapcsolatról kapsz információt.

Megjegyzés: Ha transzakciókezelést használsz, akkor a mysql_affected_rows() függvényt az INSERT, UPDATE, vagy DELETE kérés után közvetlenül, nem a kommit után kell meghívni.

Ha az utolsó lekérdezés egy WHERE feltétel nélküli DELETE volt, akkor bár a táblából minden sor törlődik, a függvény nullát fog visszaadni.

Megjegyzés: Ha UPDATE-tel használod, a MySQL nem fogja azokat a sorokat frissíteni, ahol a sor régi és új értéke megegyezik. Így nem kizárt, hogy a mysql_affected_rows() függvény nem pont az egyező sorok számát adja vissza, hanem csak a ténylegesen megváltoztatott sorok számát.

A függvény nem működik a lekérdező SELECT kéréssel együtt használva, csak azokkal a lekérdezésekkel, melyek rekordokat módosítanak. Ha egy SELECT lekérdezésben kapott sorok számát szeretnéd megkapni, akkor használd a mysql_num_rows() függvényt.

Ha az utolsó kérés meghiusult, akkor a függvény -1-gyel tér vissza.

Példa 1. Delete kérés

<?php
/* Csatlakozás az adatbázishoz */
$kapcsolat = mysql_pconnect('localhost', 'mysql_felhasználó', 'titok');
if (!
$kapcsolat) {
    die(
'Nem tudok csatlakozni' . mysql_error());
}
mysql_select_db('adatbazis');
/* Ez visszaadja a törölt rekordszámot */
mysql_query('DELETE FROM tablanev WHERE id < 10');
printf("%d rekordot töröltem\n", mysql_affected_rows());

/* Ha where feltétel sohasem true, 0-át ad */
mysql_query("DELETE FROM tablanev WHERE 0");
printf("%d rekordot töröltem\n", mysql_affected_rows());
?>

A fenti példa kimenete:

10 rekordot töröltem
0 rekordot töröltem

Példa 2. Update kérés

<?php
/* Csatlakozás az adatbázishoz */
mysql_pconnect('localhost', 'mysql_felhasználó', 'titok') or
    die(
'Nem tudok csatlakozni');
mysql_select_db('adatbazis');
/* Update */
mysql_query("UPDATE mytable SET used=1 WHERE id < 10");
printf("%d rekordot frissítettem\n", mysql_affected_rows());
mysql_query("COMMIT");
?>

A fenti példa kimenete:

10 rekordot frissítettem

Lásd még amysql_num_rows() és a mysql_info() függvényt!