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

Zadaniem funkcji PHP o nazwie mysqli_free_result() jest

A. nawiązać połączenie z serwerem bazy danych.
Źle. Połączenie z serwerem nawiązuje mysqli_connect().
B. pobrać kolejny wiersz z wyniku zapytania.
Źle. Wiersze pobierają funkcje mysqli_fetch_row() i podobne.
C. zwolnić pamięć zajmowaną przez wynik zapytania.
Dobrze. Funkcja zwalnia pamięć po obiekcie wyniku zwróconym przez mysqli_query().
D. wybrać bazę danych, z której będą pobierane dane.
Źle. Bazę wybiera mysqli_select_db() albo argument mysqli_connect().

mysqli_free_result() zwalnia pamięć zajmowaną przez wynik zapytania, czyli obiekt zwrócony przez mysqli_query() dla polecenia SELECT. Wiersze wyniku leżą w pamięci serwera WWW tak długo, jak istnieje ten obiekt. Kolejność pracy wygląda tak: zapytanie, pętla z mysqli_fetch_row() i na koniec mysqli_free_result($wynik);.

Po zakończeniu skryptu PHP i tak zwalnia całą pamięć, więc w krótkich skryptach brak tej funkcji niczego nie psuje. Ma znaczenie w długich skryptach wykonujących wiele dużych zapytań, na przykład przy eksporcie danych. Po zwolnieniu wyniku nie można już z niego pobierać wierszy.

Na końcu pracy z bazą wywołuje się jeszcze mysqli_close(), które zamyka całe połączenie, a nie tylko jeden wynik.

Nazwy funkcji z rodziny mysqli_ łatwo pomylić, bo każda dotyczy bazy. Połączenie z serwerem nawiązuje mysqli_connect() i to ona zwraca obiekt połączenia, przekazywany potem do innych funkcji. Słowo „free” w nazwie oznacza zwalnianie, a nie łączenie.

Kolejny wiersz wyniku pobierają mysqli_fetch_row(), mysqli_fetch_assoc() albo mysqli_fetch_array(), zwykle w pętli while. mysqli_free_result() działa dopiero wtedy, gdy wiersze nie są już potrzebne.

Bazę danych wybiera się przez mysqli_select_db() albo od razu czwartym argumentem mysqli_connect(). Do zwalniania pamięci po wyniku zapytania służy wyłącznie mysqli_free_result(). Zapamiętaj kolejność: połączenie, zapytanie, pobieranie wierszy, zwolnienie wyniku i zamknięcie połączenia.

Warto też odróżnić zwolnienie wyniku od zamknięcia połączenia. mysqli_close() kończy połączenie z serwerem, a mysqli_free_result() usuwa z pamięci tylko jeden wynik - połączenie dalej działa i można wysyłać przez nie kolejne zapytania do bazy.

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.