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] )

Az előző link_identifier-rel azonosított kapcsolatban kiadott INSERT, UPDATE 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

Példa 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

Példa 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

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.

SELECT utasítás: Ha egy SELECT által visszaadott sorok száma érdekel, akkor használhatod a mysql_num_rows() függvényt.

Lásd még

mysql_num_rows()
mysql_info()