Forum und email

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

int mysql_affected_rows ([ resource $link_identifier ] )

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.