Przejdź do głównej treści

Kwalifikacja: INF.03 - Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych

Zawód: Technik informatyk, Technik programista

Kategorie: Bazy danych PHP

Słowa kluczowe: DQL w SQL mysql_num_rows() w PHP

Funkcja PHP mysqli_fetch_all($wynik), wywołana dla wyniku zapytania SELECT, zwraca

A. tylko jeden, kolejny wiersz wyniku zapytania
Źle. Pojedynczy wiersz pobierają mysqli_fetch_row lub mysqli_fetch_assoc. Słowo all oznacza wszystkie wiersze.
B. wszystkie wiersze wyniku zapytania naraz, w postaci tablicy wierszy
Dobrze. mysqli_fetch_all pobiera cały wynik naraz jako tablicę wierszy.
C. nazwy kolumn tabeli, z której pobrano dane
Źle. Opis kolumn zwraca mysqli_fetch_fields, a nie mysqli_fetch_all.
D. liczbę wierszy w wyniku zapytania
Źle. Liczbę wierszy zwraca mysqli_num_rows. fetch_all zwraca same dane.

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.

Wymagane logowanie

Ocenianie trudności pytań jest dostępne tylko dla zalogowanych użytkowników. Zaloguj się, aby skorzystać z pełni możliwości platformy.

Twoja ocena pomoże innym uczniom w przygotowaniu do egzaminu, a Tobie pozwoli na dostęp do spersonalizowanych statystyk.

Zgłoś błąd w pytaniu

Rozwiń sekcję i zmień pole, którego dotyczy błąd. Wysłane zostaną tylko zmienione sekcje.

Błędna kwalifikacja
Błąd w treści pytania
Błąd w treści odpowiedzi
Błąd w obrazie
Dane kontaktowe (opcjonalnie)
Podaj email, jeśli chcesz otrzymać informację o rozpatrzeniu zgłoszenia.