Zadaniem funkcji PHP o nazwie mysqli_free_result() jest
mysqli_connect().mysqli_fetch_row() i podobne.mysqli_query().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.