Zadaniem funkcji PHP o nazwie mysqli_num_rows() jest
Opracowane na podstawie zadania CKE, czerwiec 2016 (arkusz E.14-X-16.05): Funkcje mysql_* usunięto w PHP 7 - zadanie przepisano na odpowiedniki mysqli_*.
Funkcja mysqli_num_rows($wynik) zwraca liczbę wierszy w wyniku zapytania SELECT. Argumentem jest obiekt wyniku zwrócony przez mysqli_query(), a nie połączenie z bazą. Typowy kod: $wynik = mysqli_query($db, "SELECT * FROM uczniowie"); $ile = mysqli_num_rows($wynik);.
Liczbę wierszy wykorzystuje się np. do komunikatu „Nie znaleziono wyników”, gdy wynosi 0, albo jako granicę pętli for. Dla poleceń INSERT, UPDATE i DELETE liczbę zmienionych wierszy podaje inna funkcja: mysqli_affected_rows($db). Dawna funkcja mysql_num_rows działała tak samo, ale całe rozszerzenie mysql usunięto w PHP 7.
Zapamiętaj: num_rows to liczba wierszy wyniku, a nie ich numeracja ani treść.
Nazwa funkcji zawiera słowa num i rows, więc łatwo uznać, że numeruje wiersze. Funkcja niczego w bazie nie zmienia i nie nadaje numerów rekordom. Kolejne numery w tabeli nadaje kolumna z atrybutem AUTO_INCREMENT, a nie funkcja PHP.
Pobieranie kolejnego rekordu wyniku to zadanie funkcji z rodziny fetch: mysqli_fetch_row() albo mysqli_fetch_assoc(). Każde ich wywołanie przesuwa się o jeden wiersz dalej.
Rekord o wskazanym numerze nie jest zwracany przez żadną funkcję typu num. Do ustawienia wskaźnika na konkretnym wierszu służy mysqli_data_seek($wynik, 5), a sam wiersz trzeba potem pobrać funkcją fetch. Zapamiętaj: num_rows to liczba wierszy, fetch to pobranie wiersza.
Wszystkie te funkcje przyjmują ten sam argument, czyli wynik mysqli_query(), dlatego łatwo je pomylić. Różnią się tym, co zwracają: liczbę albo wiersz.