Funkcja PHP mysqli_fetch_all($wynik), wywołana dla wyniku zapytania SELECT, zwraca
Funkcja mysqli_fetch_all($wynik) pobiera od razu cały wynik zapytania i zwraca go jako tablicę, w której każdy element jest jednym wierszem. Domyślnie wiersze są tablicami indeksowanymi numerami kolumn, a z drugim argumentem MYSQLI_ASSOC indeksami są nazwy kolumn: $dane = mysqli_fetch_all($wynik, MYSQLI_ASSOC);.
Tak pobrane dane przegląda się zwykłą pętlą foreach ($dane as $w) echo $w["nazwisko"];. To wygodne przy małych wynikach, np. liście kategorii. Przy bardzo dużych lepiej pobierać wiersz po wierszu w pętli while, bo fetch_all trzyma wszystko w pamięci naraz. Funkcja wymaga sterownika mysqlnd, który w nowych wersjach PHP jest standardem.
Wybór liczby wierszy bierze się z pomylenia funkcji zwracających wynik z funkcjami, które go opisują. Liczbę wierszy podaje mysqli_num_rows($wynik). Sama liczba dałaby się co najwyżej odczytać z wyniku fetch_all funkcją count().
Pojedynczy, kolejny wiersz pobierają funkcje mysqli_fetch_row(), mysqli_fetch_assoc() i mysqli_fetch_array(). Słowo all w nazwie oznacza właśnie, że zamiast jednego wiersza dostajesz wszystkie.
Informacje o kolumnach zwraca mysqli_fetch_fields($wynik), a ich liczbę mysqli_num_fields($wynik). mysqli_fetch_all zwraca dane, a nie opis struktury.
Podobne nazwy łatwo pomylić, dlatego warto rozłożyć je na części: przedrostek mysqli_ oznacza bibliotekę, fetch pobranie danych, num liczbę, a końcówka mówi, czego dotyczy wynik: row to jeden wiersz, all wszystkie wiersze, fields kolumny. Z tego klucza od razu wynika, że fetch_all zwraca cały wynik zapytania, a nie liczbę wierszy czy opis kolumn.