mysql_affected_rows
(PHP 4, PHP 5, PECL mysql:1.0)
mysql_affected_rows — Az előző MySQL műveletben érintett sorok számát adja meg
Leírás
Az előző link_identifier -rel azonosított kapcsolatban kiadott INSERT, UPDATE, REPLACE vagy DELETE kérésben érintett sorok számát adja meg.
Paraméterek
- link_identifier
-
A MySQL kapcsolat. Ha a kapcsolatazonosító nincs megadva, akkor az utólsó mysql_connect()-el megnyitott kapcsolatot használja. Ha nem talál semmilyen kapcsolatot, megpróbál létrehozni egyet úgy, mintha a mysql_connect() paraméterek nélkül lett volna meghívva. Ha esetleg semmilyen kapcsolatot nem talál és nem is sikerül létrehoznia, akkor egy E_WARNING szintű figyelmeztetés generálódik.
Visszatérési értékek
Sikeres végrehajtás esetén az érintett sorok számát adja vissz, ha pedig a legutóbbi kérés sikertelen volt, a visszaadott érték -1.
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 MySQL 4.1.2. előtti verzióiban a függvény nullát fog visszaadni.
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 REPLACE utasítás először kitörli a megfelelő elsődleges kulcsú rekordot, majd beszúr egy újat. Ez a függvény a törölt sorok számát + a beszúrt sorok számát adja vissza.
Példák
Example#1 mysql_affected_rows() példa
<?php
$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 valami ilyesmi kimenetet ad:
10 rekordot töröltem 0 rekordot töröltem
Example#2 mysql_affected_rows() példa tranzakciók használatával
<?php
$kapcsolat = mysql_pconnect('localhost', 'mysql_felhasználó', 'titok')
if (!$kapcsolat) {
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 valami ilyesmi kimenetet ad:
10 rekordot frissítettem
Megjegyzések
Note: Tranzakciók Ha használsz tranzakciókat, akkor az INSERT, UPDATE vagy DELETE kérésed után kell meghívnod a mysql_affected_rows() függvényt, és nem a COMMIT után.
Note: SELECT utasítás Ha egy SELECT által visszaadott sorok száma érdekel, akkor használhatod a mysql_num_rows() függvényt.