Podręcznik PHP
Poprzedni |  | Następny

# mysql_affected_rows

(PHP 3, PHP 4 )

mysql_affected_rows -- Zwraca ilość wierszy przetworzonych w poprzedniej operacji MySQL

## Opis

int mysql_affected_rows ( [resource identyfikator_połączenia])

mysql_affected_rows() zwraca ilość wierszy przetworzonych w ostatniej operacji INSERT, UPDATE lub DELETE na serwerze skojarzonym z podanym identyfikatorem połączenia. Jeżeli identyfikator połączenia nie został podany, domyślnie wykorzystywane jest ostatnie połączenie otwarte przez mysql_connect().

> Notatka: Przy korzystaniu z transakcji, funkcję mysql_affected_rows() należy wywołać po operacjach INSERT, UPDATE lub DELETE, a nie po zatwierdzeniu (commit).

Jeżeli ostatnim zapytaniem było DELETE bez użycia WHERE, wszystkie rekordy zostały usunięte z tabeli, ale funkcja zwróci zero.

> Notatka: Podczas operacji UPDATE, MySQL nie aktualizuje kolumn w których nowa wartość jest identyczna z poprzednią. Możliwe jest zatem, że zwrócona przez mysql_affected_rows() liczba nie będzie odpowiadać liczbie wierszy pasujących do zapytania, ale tych, które zostały faktycznie zmienione.

mysql_affected_rows() nie ma zastosowania do operacji SELECT, lecz tylko do operacji, które modyfikują rekordy. Aby uzyskać liczbę wierszy zwróconych przez SELECT, użyj funkcji mysql_num_rows().

Jeśli ostatnie zapytanie nie powiodło się, funkcja zwróci -1.

Przykład 1. Zapytanie DELETE
`<?php /* łączenie z bazą */ mysql_pconnect('localhost', 'uzytkownik', 'haslo') or die("Nie można się połączyć: " . mysql_error()); /* to powinno zwrócić poprawną liczbę usuniętych rekordów */ mysql_query("DELETE FROM mytable WHERE id < 10"); printf ("Usuniętych rekordów: %d\n", mysql_affected_rows()); /* bez warunku 'where' zwrócone zostanie 0 */ mysql_query("DELETE FROM mytable"); printf ("Usuniętych rekordów: %d\n", mysql_affected_rows()); ?>`
Powyższy przykład da następujący wynik:
    Usuniętych rekordów: 10
    Usuniętych rekordów: 0

Przykład 2. Zapytanie UPDATE
`<?php /* łączenie z bazą */ mysql_pconnect('localhost', 'uzytkownik', 'haslo') or die("Nie można się połączyć: " . mysql_error()); /* aktualizacja rekordów */ mysql_query("UPDATE mytable SET used=1 WHERE id < 10"); printf ("Zaktualizowanych rekordów: %d\n", mysql_affected_rows()); mysql_query("COMMIT"); ?>`
Powyższy przykład da następujący wynik:
    Zaktualizowanych rekordów: 10

Patrz także: mysql_num_rows(), mysql_info().

Poprzedni | Spis treści | Następny
MySQL | Początek rozdziału | mysql_change_user