KWALIFIKACJA INF3 - STYCZEŃ 2024

PYTANIE NR 40.
W prezentowanym kodzie PHP w miejscu kropek powinno znaleźć się polecenie
Ilustracja przedstawia fragment kodu PHP, który jest częścią pytania egzaminacyjnego związanego z kwalifikacją zawodową
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
mysqli_fetch_array($zapytanie) służy do pobrania pojedynczego wiersza z wyniku zapytania i zwrócenia go jako tablicy. Pozostałe funkcje nie pobierają rekordów: mysqli_query wykonuje zapytanie, mysqli_num_fields zwraca liczbę pól, a mysqli_free_result zwalnia zasób wyniku.

Pełne wyjaśnienie:

W typowym schemacie pracy z bazą danych w PHP (MySQLi) najpierw wykonuje się zapytanie, a następnie iteruje po wyniku i pobiera kolejne rekordy do zmiennych, aby je wyświetlić lub przetworzyć. Do tego właśnie służy funkcja mysqli_fetch_array($zapytanie) – pobiera jeden wiersz z rezultatu (result set) i zwraca go jako tablicę (zależnie od ustawień może zawierać indeksy liczbowe i/lub nazwy kolumn).

Dlatego w miejscu, w którym "ma się pojawić polecenie" odpowiadające za uzyskanie danych rekordu, właściwe jest użycie pobierania wiersza. Jest to szczególnie charakterystyczne dla konstrukcji typu while (...), gdzie warunek pętli stanowi właśnie kolejne pobieranie rekordu aż do wyczerpania wyniku.

Dlaczego pozostałe propozycje są niepoprawne w takim miejscu?

  • mysqli_free_result($zapytanie) nie zwraca rekordu, tylko zwalnia pamięć zajętą przez wynik. Używa się jej po zakończeniu przetwarzania danych, a nie do odczytu wierszy.
  • mysqli_num_fields($zapytanie) zwraca liczbę kolumn w wyniku. To informacja o strukturze danych (ile pól ma rekord), a nie same dane rekordu.
  • mysqli_query($zapytanie) służy do wykonania zapytania SQL na połączeniu. W praktyce jej pierwszy argument to obiekt połączenia, a dopiero drugi to tekst zapytania. To etap wcześniejszy niż pobieranie wyników.

Wskazówka egzaminacyjna: rozpoznaj, czy w danym miejscu kod oczekuje danych rekordu (wtedy "fetch"), czy operacji administracyjnej na wyniku (np. "free"), albo informacji o metadanych (np. liczba pól).

Dodatkowe pytania

Dodatkowe pytania (FAQ):
mysqli_fetch_array() pobiera jeden wiersz z wyniku zapytania MySQLi i zwraca go jako tablicę. Najczęściej używa się jej w pętli, aby kolejno przetworzyć wszystkie rekordy zwrócone przez zapytanie SELECT.
Wynik zapytania to obiekt/zasób zawierający zestaw rekordów zwróconych przez SELECT. Najpierw go uzyskujesz po wykonaniu zapytania, a potem używasz funkcji typu fetch, aby pobrać kolejne wiersze do zmiennych i je wyświetlić lub przetworzyć.
mysqli_query() wykonuje zapytanie SQL na połączeniu z bazą (etap "wykonaj"). Nie zwraca pojedynczego rekordu, tylko zwraca obiekt wyniku lub informację o powodzeniu. Rekordy pobiera się dopiero kolejnymi wywołaniami funkcji typu fetch.
mysqli_free_result() stosuje się po zakończeniu czytania danych z wyniku, aby zwolnić zasoby (pamięć) zajęte przez result set. Nie jest to funkcja do pobierania danych, więc nie wstawia się jej w miejscu, gdzie kod oczekuje rekordu.
mysqli_num_fields() (lub właściwość field_count) informuje, ile kolumn ma wynik zapytania. Przydaje się przy dynamicznym generowaniu tabeli lub walidacji struktury danych, ale nie zastępuje pobierania wierszy z bazy.
Najczęściej jest to: wykonanie SELECT (np. mysqli_query), a następnie pętla pobierająca rekordy (np. mysqli_fetch_array lub mysqli_fetch_assoc). Na końcu można zwolnić wynik (mysqli_free_result) i zamknąć połączenie.
Nie. mysqli_fetch_array() pobiera jeden rekord na wywołanie. Aby pobrać wszystkie rekordy, zwykle uruchamia się ją wielokrotnie w pętli (np. while), aż zwróci wartość wskazującą brak kolejnych wierszy.
mysqli_fetch_assoc() zwraca tablicę indeksowaną nazwami kolumn. mysqli_fetch_array() może zwracać tablicę z indeksami liczbowymi, nazwami kolumn lub oboma naraz (zależnie od parametru). Na egzaminie ważne jest rozpoznanie, że obie należą do rodziny "fetch".
Częsty błąd to mylenie funkcji: użycie mysqli_query tam, gdzie potrzebne jest fetch, albo zwalnianie wyniku (mysqli_free_result) przed zakończeniem iteracji. Problemem bywa też brak sprawdzenia, czy zapytanie zwróciło wynik i czy są w nim rekordy.
Jeśli w kodzie widać pętlę przetwarzającą rekordy, zmienną mającą zawierać wiersz (np. $row) albo odwołania do kolumn, to w "kropkach" zwykle powinno znaleźć się pobranie rekordu z wyniku, czyli funkcja z rodziny fetch.
info

To pytanie poprawnie rozwiązuje 48% zdających egzamin. trudne

Eksperci podkreślają: "mysqli_fetch_array($zapytanie) służy do pobrania pojedynczego wiersza z wyniku zapytania i zwrócenia go jako tablicy."

Źródła:

  • PHP Manual: mysqli_result::fetch_array / mysqli_fetch_array — https://www.php.net/manual/en/mysqli-result.fetch-array.php (dostęp: 2026-03-02)
  • PHP Manual: mysqli_free_result — https://www.php.net/manual/en/mysqli-result.free.php (dostęp: 2026-03-02)
  • PHP Manual: mysqli_num_fields — https://www.php.net/manual/en/mysqli-result.field-count.php (dostęp: 2026-03-02)

Materiały:

  • Oficjalna dokumentacja PHP: sekcja MySQLi
  • Ćwiczenia praktyczne: pobieranie danych w pętli while i wyświetlanie w tabeli HTML
  • Porównanie MySQLi i PDO (kiedy używać, różnice w pobieraniu wyników)

Aktualizacja pytania: 31.03.2026

Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego