Funkcja mysql_affected_rows() w PHP

Definicja i użycie

Funkcja mysql_affected_rows() zwraca liczbę wierszy rekordów wpływających na ostatnią operację MySQL.

Gramatyka

mysql_affected_rows(link_identifier)
Parametry Opis
link_identifier Wymagane. Identyfikator połączenia MySQL. Jeśli nie został określony, domyślnie używa ostatniego mysql_connect() Otwarte połączenie. Jeśli nie znajdzie połączenia, funkcja spróbuje wywołać mysql_connect() Utwórz połączenie i użyj go. W przypadku awarii, braku połączenia lub niemożności utworzenia połączenia, system wydaje ostrzeżenie na poziomie E_WARNING.

Opis

Otrzymać ostatnią z link_identifier Liczba wierszy rekordów wpływających na zapytania INSERT, UPDATE lub DELETE.

Zwraca wartość

Zwraca liczbę wierszy dotkniętych, jeśli wykonanie się powiodło, w przeciwnym razie funkcja zwraca -1.

Jeśli ostatnia operacja to DELETE bez warunków (WHERE), wszystkie rekordy w tabeli zostaną usunięte, ale wartość zwracana przez tę funkcję przed wersją 4.1.2 zawsze wynosi 0.

Podczas używania zapytań UPDATE MySQL nie aktualizuje kolumn, w których wartości przed i po aktualizacji są takie same. W rezultacie wartość zwracana przez funkcję mysql_affected_rows() niekoniecznie jest liczba rekordów spełniających warunki zapytania, tylko liczba rzeczywiście zmodyfikowanych rekordów.

Wyrażenie REPLACE najpierw usuwa rekordy o tym samym kluczu głównym, a następnie wstawia nowy rekord. Funkcja zwraca liczbę usuniętych rekordów plus liczbę wstawionych rekordów.

Przykład

<?php
$con = mysql_connect("localhost","mysql_user","mysql_pwd");
if (!$con)
  {
  die("Nie można połączyć: " . mysql_error());
  }
mysql_select_db("mydb");
mysql_query("DELETE FROM mytable WHERE id < 5");
$rc = mysql_affected_rows();;
echo "Usunięte rekordy: " . $rc;
mysql_close($con);
?>

Wynik:

Usunięte rekordy: 4