KWALIFIKACJA INF3 - STYCZEŃ 2020

PYTANIE NR 37.
W języku PHP wykonano operację przedstawioną poniżej. Aby wyświetlić wszystkie wyniki tego zapytania, należy

$tab = mysqli_query($db, "SELECT imie FROM Osoby WHERE wiek < 18");

A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Wynik mysqli_query nie jest gotową listą imion, tylko zestawem wyników, z którego trzeba pobierać kolejne wiersze.
Aby wyświetlić wszystkie rekordy, stosuje się pętlę i funkcję pobierającą wiersz, np. mysqli_fetch_row, aż do wyczerpania wyników.

Pełne wyjaśnienie:

Instrukcja wykonuje zapytanie do bazy danych i zapisuje rezultat w zmiennej $tab. Taka zmienna nie zawiera od razu wszystkich imion jako zwykłej tablicy PHP, tylko obiekt/zestaw wyników, z którego dane należy odczytywać wiersz po wierszu.

Dlatego poprawne jest podejście: użyć pętli (np. while) i w każdej iteracji pobrać jeden rekord funkcją mysqli_fetch_row. Funkcja zwraca pojedynczy wiersz w postaci tablicy indeksowanej numerycznie; gdy nie ma już danych, zwraca wartość sygnalizującą koniec wyników i pętla się kończy.

Pozostałe odpowiedzi są błędne, bo:

  • mysql_fetch dotyczy innego, starszego sposobu obsługi bazy i nie pasuje do wyniku uzyskanego z interfejsu mysqli; dodatkowo taki kierunek jest obecnie niepożądany.
  • Wyświetlenie zmiennej $db nic nie da, bo jest to uchwyt/obiekt połączenia z bazą, a nie dane zwrócone przez zapytanie.
  • Indeksowanie $tab[0] zakłada, że wynik zapytania jest zwykłą tablicą z rekordami. W praktyce trzeba najpierw pobrać wiersze (np. fetch), a dopiero potem można odwoływać się do pól w pobranym rekordzie.

Na egzaminie warto zapamiętać schemat: wykonaj zapytanie → iteruj pętlą → pobieraj rekordy funkcją fetch → przetwarzaj/wyświetlaj.

Dodatkowe pytania

Dodatkowe pytania (FAQ):

mysqli_query zwraca zestaw wyników zapytania (obiekt wyniku) albo informację o powodzeniu operacji.

Nie jest to od razu tablica z danymi do indeksowania. Aby dostać rekordy, trzeba je pobierać funkcjami typu fetch w pętli.

Najczęściej używa się pętli while i w każdej iteracji pobiera jeden wiersz z wyniku zapytania.

Przykładowo pobierasz rekord funkcją zwracającą wiersz, przetwarzasz go (np. wypisujesz), a pętla kończy się, gdy nie ma już danych.

Zapytanie SELECT może zwrócić wiele rekordów, a funkcja pobierająca wiersz zwykle zwraca tylko jeden rekord naraz.

Pętla pozwala przejść po całym zestawie wyników i obsłużyć każdy wiersz aż do wyczerpania danych.

Zestaw wyników to struktura danych przechowująca rekordy zwrócone przez zapytanie SELECT.

W PHP (przy typowych bibliotekach) jest to osobny obiekt/zasób, z którego rekordy pobiera się stopniowo funkcjami fetch, zamiast mieć wszystko od razu w tablicy.

Zwykle nie. Zmienna po mysqli_query reprezentuje wynik zapytania, a nie tablicę rekordów.

Aby korzystać z indeksów pól, najpierw pobiera się wiersz (np. jako tablicę), a dopiero na pobranym wierszu używa indeksów lub nazw kolumn.

Najczęstsze błędy to: traktowanie połączenia z bazą jak danych, brak pętli przy wielu rekordach, próba indeksowania wyniku zapytania jak tablicy oraz użycie niepasującej funkcji pobierania wierszy.

Na egzaminie zawsze sprawdź, co zwraca dana funkcja.

mysqli_fetch_row zwraca pojedynczy wiersz jako tablicę indeksowaną numerycznie (0, 1, 2...).

Gdy zapytanie wybiera jedną kolumnę, wiersz ma zwykle jeden element. Funkcję wywołuje się wielokrotnie w pętli, aż wynik się skończy.

$db to uchwyt/obiekt połączenia z bazą (kanał komunikacji).

Wynik zapytania to osobny obiekt/zasób z rekordami zwróconymi przez SELECT. Wyświetlenie samego połączenia nie pokaże danych; trzeba pobierać wiersze z wyniku.

W wielu zadaniach spotyka się rozróżnienie między starszymi funkcjami a nowszymi interfejsami.

Jeśli w kodzie użyto stylu mysqli, to dobór funkcji pobierającej wiersze powinien być spójny z tym interfejsem. Mieszanie nazw często oznacza błąd.

Przećwicz standardowe schematy: wykonanie SELECT, pętla po wynikach, pobranie rekordu, dostęp do pól i wypisanie danych.

Ucz się rozpoznawać, czy funkcja zwraca połączenie, wynik, pojedynczy wiersz czy liczbę wierszy. To zwykle rozstrzyga odpowiedź.

info

Statystycznie 63% uczniów zna prawidłową odpowiedź. średnie

Źródła:

  • PHP Manual: mysqli_query — https://www.php.net/manual/en/mysqli.query.php (dostęp: 2026-02-28)
  • PHP Manual: mysqli_fetch_row — https://www.php.net/manual/en/mysqli-result.fetch-row.php (dostęp: 2026-02-28)
  • PHP Manual: Migrating from ext/mysql to mysqli — https://www.php.net/manual/en/mysqlinfo.api.choosing.php (dostęp: 2026-02-28)

Materiały:

  • Oficjalna dokumentacja PHP: opis funkcji do wykonywania zapytań i pobierania wierszy
  • Zadania praktyczne: wykonanie zapytania SELECT i wypisanie wyników w pętli
  • Materiały o bezpieczeństwie zapytań: przygotowane zapytania (prepared statements) jako dobra praktyka

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego