PHP kézikönyv
Előző |  | Következő

# 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()

Előző | Tartalom | Következő
MySQL függvények | Fel | mysql_change_user