MySQL Funkcje
mysql_client_encoding
MySQL Funkcje
PHP Manual

# mysql_affected_rows

(PHP 4, PHP 5)

mysql_affected_rows — Zwraca liczbę wierszy przetworzonych w poprzedniej operacji MySQL

### Opis

int mysql_affected_rows ([ resource `$identyfikator_połączenia` ] )

Pobiera liczbę wierszy przetworzonych w ostatnim zapytaniu INSERT, UPDATE, REPLACE lub DELETE skojarzonym z `identyfikator_połączenia`.

### Parametry

`identyfikator_połączenia`

  Połączenie MySQL. Jeśli identyfikator połączenia nie zostanie podany, użyte zostanie ostatnie połączenie otwarte przez mysql_connect(). Jeśli połączenie takie nie zostanie znalezione, funkcja spróbuje nawiązać połączenie tak, jakby wywołana została funkcja mysql_connect() bez argumentów. Jeśli żadne połączenie nie zostanie znalezione lub nawiązane, wygenerowany zostanie błąd poziomu `E_WARNING`.

### Zwracane wartości

Zwraca liczbę przetworzonych wierszy w przypadku sukcesu i -1 jeśli ostatnie zapytanie zawiedzie.

Jeżeli ostatnim zapytaniem było DELETE bez użycia klauzuli WHERE, wszystkie rekordy zostaną usunięte z tabeli, ale funkcja zwróci zero w wersjach MySQL starszych niż 4.1.2.

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.

Wyrażenie REPLACE najpierw skasuje rekord z tym samym kluczem głównym następnie wstawi nowy rekord. Ta funkcja zwraca liczbę skasowanych rekordów plus liczbę wstawionych rekordów.

### Przykłady

Przykład #1 Przykład mysql_affected_rows()

`<?php
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$link) {
die('Nie można się połączyć: ' . mysql_error());
}
mysql_select_db('mydb');
/* to powinno zwrócić prawidłową liczbę usuniętych rekordów */
mysql_query('DELETE FROM mytable WHERE id < 10');
printf("Usuniętych rekordów: %d\n", mysql_affected_rows());
/* z klauzulą where, która nigdy nie jest prawdziwa, powinno zrwócic 0 */
mysql_query('DELETE FROM mytable WHERE 0');
printf("Usuniętych rekordów: %d\n", mysql_affected_rows());
?>`

Powyższy przykład wyświetli coś podobnego do:

    Usuniętych rekordów: 10
    Usuniętych rekordów: 0

Przykład #2 Przykład mysql_affected_rows() używający transakcję

`<?php
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$link) {
die('Nie można się połączyć: ' . mysql_error());
}
mysql_select_db('mydb');
/* Uaktualnienie 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 wyświetli coś podobnego do:

    Zaktualizowanych rekordów: 10

### Notatki

> Informacja: Transakcje
> Jeśli używasz transakcji musisz wywołać mysql_affected_rows() po Twoim zapytaniu INSERT, UPDATE lub DELETE, a nie po COMMIT.

> Informacja: Wyrażenie SELECT
> Aby uzyskać liczbę wierszy zwróconych przez SELECT, można użyć use mysql_num_rows().

### Zobacz też:

- mysql_num_rows() - Zwraca liczbę wierszy w wyniku
- mysql_info() - Pobiera informacje o ostatnim zapytaniu

MySQL Funkcje
mysql_client_encoding
MySQL Funkcje
PHP Manual