KWALIFIKACJA INF3 - STYCZEŃ 2017

PYTANIE NR 39.
W języku PHP, wykonując operacje na bazie danych MySQL, aby zakończyć pracę z bazą, należy wywołać
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
W PHP po zakończeniu pracy z bazą danych należy zamknąć połączenie, aby zwolnić zasoby i nie utrzymywać niepotrzebnych sesji na serwerze. Służy do tego funkcja mysqli_close(), która zamyka uchwyt połączenia. Pozostałe opcje dotyczą transakcji albo nie są poprawną funkcją MySQLi.

Pełne wyjaśnienie:

W aplikacjach PHP korzystających z MySQL (w rozszerzeniu MySQLi) po wykonaniu operacji na bazie danych warto jawnie zakończyć pracę z połączeniem. Poprawnym wywołaniem jest mysqli_close(), ponieważ ta funkcja służy do zamykania wcześniej otwartego połączenia (uchwytu) do serwera MySQL. W praktyce oznacza to zwolnienie zasobów po stronie aplikacji i serwera oraz ograniczenie ryzyka utrzymywania zbędnych połączeń.

Odpowiedź mysqli_commit() bywa myląca, bo również "kończy" pewien etap pracy, ale dotyczy wyłącznie transakcji: zatwierdza zmiany wykonane w jej ramach. Nie zamyka jednak połączenia z bazą.

Podobnie mysqli_rollback() odnosi się do transakcji i służy do wycofania (anulowania) zmian, jeśli wystąpi błąd lub chcemy przywrócić stan sprzed rozpoczęcia transakcji. To nadal nie jest zamknięcie połączenia.

Opcja mysqli_exit() jest niepoprawna w tym kontekście, ponieważ w standardowym API MySQLi nie jest to funkcja przeznaczona do zamykania połączenia. Łatwo tu o błąd skojarzeniowy: słowo "exit" kojarzy się z zakończeniem programu, ale zakończenie skryptu PHP to co innego niż zamknięcie konkretnego zasobu, jakim jest połączenie z bazą.

Wskazówka egzaminacyjna: jeśli w pytaniu jest mowa o "zakończeniu pracy z bazą" w znaczeniu zwolnienia połączenia, szukaj funkcji związanej z close (zamknięciem). Jeśli pojawiają się słowa "zatwierdzić" lub "wycofać", wtedy właściwe są funkcje transakcyjne.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
mysqli_close() zamyka wcześniej otwarte połączenie z serwerem MySQL w rozszerzeniu MySQLi. Dzięki temu zwalniasz zasoby (np. uchwyt połączenia) i ograniczasz ryzyko pozostawienia niepotrzebnych, otwartych sesji bazy danych po stronie serwera.
Jawne zamknięcie połączenia pomaga zwalniać zasoby i utrzymywać porządek w aplikacji, zwłaszcza gdy skrypt otwiera wiele połączeń lub działa długo. W praktyce zmniejsza to ryzyko przekroczenia limitów połączeń na serwerze oraz ułatwia analizę błędów.
mysqli_close() dotyczy połączenia i je zamyka. mysqli_commit() dotyczy transakcji i zatwierdza wykonane w niej zmiany w bazie. Commit nie zamyka połączenia, a close nie zatwierdza transakcji—to dwa różne poziomy działania.
mysqli_rollback() stosuje się, gdy w trakcie transakcji wystąpi błąd lub chcesz anulować wprowadzone zmiany. mysqli_commit() wybierasz, gdy wszystkie operacje zakończyły się poprawnie i chcesz je trwale zapisać. Obie funkcje nie zamykają połączenia.
W praktyce wiele zasobów jest zwalnianych po zakończeniu skryptu, ale na egzaminie i w dobrym stylu programowania przyjmuje się jawne zarządzanie połączeniem. Dlatego, gdy pytanie dotyczy "zakończenia pracy z bazą", oczekuje się wskazania funkcji zamykającej połączenie.
Najczęstszy błąd to mylenie zamknięcia połączenia z operacjami na transakcjach, czyli wybór commit lub rollback. Drugi błąd to sugerowanie się słowem "zakończyć" i wybór funkcji przypominającej "exit", mimo że nie dotyczy ona obsługi połączeń MySQLi.
W prostych zadaniach egzaminacyjnych zakłada się, że poprawne wywołanie mysqli_close() kończy pracę z połączeniem. W praktyce warto też sprawdzać obsługę błędów dla połączenia i zapytań (np. komunikaty błędów), a po zamknięciu nie wykonywać kolejnych zapytań tym samym uchwytem.
Transakcja to zestaw operacji w bazie wykonywanych jako całość: albo wszystkie zmiany zostaną zatwierdzone (commit), albo wszystkie zostaną wycofane (rollback). Transakcja dotyczy spójności danych. Jest niezależna od samego faktu posiadania otwartego połączenia z bazą.
Zbyt wiele otwartych połączeń może obciążać serwer MySQL i prowadzić do problemów z limitem sesji, spadku wydajności lub błędów połączenia. W aplikacjach webowych, gdzie wielu użytkowników wykonuje operacje równolegle, poprawne zamykanie połączeń jest ważne dla stabilności.
Przećwicz pełny schemat: nawiązanie połączenia, wykonanie zapytania, pobranie wyników, obsługa błędów, a na końcu zamknięcie połączenia. Ucz się też rozróżniać polecenia transakcyjne (commit/rollback) od zarządzania połączeniem (close), bo to częsty motyw pytań.
info

To pytanie poprawnie rozwiązuje 64% zdających egzamin. średnie

Według specjalistów z branży: "W PHP po zakończeniu pracy z bazą danych należy zamknąć połączenie, aby zwolnić zasoby i nie utrzymywać niepotrzebnych sesji na serwerze."

Źródła:

  • PHP Manual: mysqli_close — Closes a previously opened database connection, https://www.php.net/manual/en/mysqli.close.php - dostęp 2026-03-01
  • PHP Manual: mysqli_commit — Commits the current transaction, https://www.php.net/manual/en/mysqli.commit.php - dostęp 2026-03-01
  • PHP Manual: mysqli_rollback — Rolls back current transaction, https://www.php.net/manual/en/mysqli.rollback.php - dostęp 2026-03-01

Materiały:

  • Dokumentacja PHP: rozszerzenie MySQLi (mysqli)
  • Przykłady CRUD w PHP z MySQL (MySQLi, styl proceduralny i obiektowy)
  • Materiały o transakcjach w MySQL (ACID, commit, rollback)

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego