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 */
    
mysql_pconnect("localhost", "mysql_felhasználó", "titok") or
        die (
"Nem tudok csatlakozni");

    
/* Ez visszaadja a törölt rekordszámot */
    
mysql_query("DELETE FROM mytable WHERE id < 10");
    
printf ("%d rekordot töröltem\n", mysql_affected_rows());

    
/* Ha where feltétel nélkül használjuk a delete-ben, 0-át ad */
    
mysql_query("DELETE FROM mytable");
    
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");

    
/* 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!