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