Funkcję mysqli_num_rows() w PHP można wywołać po wykonaniu zapytania:
Źle.
INSERT nie zwraca zbioru wierszy do policzenia.Źle.
UPDATE modyfikuje dane, nie zwraca zbioru wynikowego.Źle.
DELETE usuwa dane, nie zwraca wyniku z wierszami.Dobrze.
mysqli_num_rows() liczy wiersze zbioru wynikowego zwróconego przez SELECT.Funkcja
mysqli_num_rows() zwraca liczbę wierszy w zbiorze wynikowym i ma sens tylko wtedy, gdy zapytanie taki zbiór zwraca - czyli po SELECT (lub np. SHOW). Przekazuje się jej wynik zapytania, np. $w = mysqli_query($db, "SELECT * FROM klienci"); $ile = mysqli_num_rows($w);. Dla zapytań modyfikujących dane liczbę zmienionych wierszy podaje inna funkcja - mysqli_affected_rows(). Dlatego mysqli_num_rows() stosuje się po zapytaniu SELECT.Pozostałe zapytania nie zwracają zbioru wierszy, który można policzyć.
INSERT dodaje rekordy, UPDATE je modyfikuje, a DELETE usuwa - żadne z nich nie oddaje tabeli wyników, więc mysqli_num_rows() nie miałaby czego liczyć (dla nich używa się mysqli_affected_rows()). Liczba wierszy w wyniku ma sens dla SELECT, dlatego to ono jest poprawne.