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: Programowanie webowe Bazy danych PHP

Której funkcji PHP należy użyć, aby pobrać kolejny wiersz wyniku zapytania SELECT jako obiekt, którego właściwości mają nazwy kolumn?

A.
mysqli_get_connection_stats()
Źle. mysqli_get_connection_stats() zwraca statystyki połączenia, a nie dane.
B.
mysqli_autocommit()
Źle. mysqli_autocommit() steruje automatycznym zatwierdzaniem zapytań.
C.
mysqli_fetch_object()
Dobrze. mysqli_fetch_object() zwraca wiersz jako obiekt z właściwościami o nazwach kolumn.
D.
mysqli_fetch_row()
Źle. mysqli_fetch_row() zwraca wiersz jako tablicę numerowaną, bez nazw kolumn.

Poprawna jest funkcja mysqli_fetch_object(). Przy każdym wywołaniu pobiera kolejny wiersz wyniku i zwraca go jako obiekt, w którym nazwy kolumn stają się nazwami właściwości. Do wartości odwołuje się więc strzałką, np. $w = mysqli_fetch_object($wynik); echo $w->nazwisko;. Gdy wierszy zabraknie, funkcja zwraca null, co kończy pętlę while.

Do zapamiętania: ten sam wiersz można odczytać na trzy sposoby - mysqli_fetch_row() daje tablicę numerowaną ($w[0]), mysqli_fetch_assoc() tablicę z nazwami kolumn ($w['nazwisko']), a mysqli_fetch_object() obiekt ($w->nazwisko). Wybór zależy od wygody i stylu kodu.

W wersji obiektowej MySQLi odpowiada jej metoda $wynik->fetch_object(), wywoływana na obiekcie wyniku zapytania.

Najbliżej poprawnej jest mysqli_fetch_row(), bo też pobiera kolejny wiersz wyniku. Zwraca go jednak jako tablicę numerowaną, w której do kolumn odwołuje się indeksami: $w[0], $w[1]. Nazwy kolumn nie są w niej dostępne, więc zapis $w->nazwisko nie zadziała.

mysqli_autocommit() włącza lub wyłącza automatyczne zatwierdzanie zapytań, co ma znaczenie przy transakcjach, a nie przy odczycie danych. mysqli_get_connection_stats() zwraca statystyki połączenia, np. liczbę wysłanych i odebranych bajtów, przydatne przy diagnozowaniu wydajności. Żadna z tych dwóch funkcji nie zwraca rekordów. Pomaga przetłumaczenie nazw: fetch to „pobierz”, row - „wiersz”, a object - „obiekt”, więc nazwa poprawnej funkcji opisuje dokładnie postać, w jakiej otrzymuje się dane.

W wersji obiektowej MySQLi wszystkie te operacje wykonuje się metodami, np. $wynik->fetch_object() albo $wynik->fetch_row(). Warto znać oba zapisy, bo w gotowych projektach spotyka się zarówno styl proceduralny, jak i obiektowy, a w arkuszach egzaminacyjnych najczęściej ten pierwszy.

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.