Forum und email
mysql_affected_rows

mysql_affected_rows

(PHP 3, PHP 4, PHP 5)

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