Podręcznik PHP
Poprzedni
Następny
mysql_affected_rows
Opis
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:
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:
Patrz także: mysql_num_rows(), mysql_info().
Poprzedni
Spis treści
Następny
MySQL
Początek rozdziału