KWALIFIKACJA INF3 - CZERWIEC 2016

PYTANIE NR 36.

Jaka treść komunikatu powinna zostać wstawiona w kodzie PHP zamiast znaków zapytania?

$a = mysqli_connect('localhost', 'adam', 'mojeHasło');
if (!$a) echo "????????????????????";
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Instrukcja mysqli_connect() zwraca FALSE, gdy nie uda się nawiązać połączenia z serwerem bazy. Warunek if (!$a) sprawdza właśnie niepowodzenie połączenia, więc komunikat powinien dotyczyć błędu połączenia, a nie wyboru bazy czy wykonania zapytania.

Pełne wyjaśnienie:

W pokazanym kodzie kluczowe jest zrozumienie, co zwraca funkcja mysqli_connect() oraz co oznacza warunek if (!$a).

mysqli_connect(host, user, pass) służy do zestawienia połączenia z serwerem bazy danych. Jeżeli połączenie się powiedzie, otrzymujemy uchwyt/obiekt połączenia. Jeżeli się nie powiedzie (np. z powodu złego hasła, niedostępnego serwera lub problemu sieciowego), funkcja zwraca wartość FALSE.

Zapis if (!$a) sprawdza, czy zmienna $a jest "fałszywa" (czyli w tym przypadku: czy połączenie nie zostało utworzone). Skoro blok echo wykonuje się tylko przy nieudanym połączeniu, poprawny komunikat to "Błąd połączenia z serwerem SQL".

Pozostałe propozycje odnoszą się do innych etapów pracy z bazą:

  • "Wybrana baza nie istnieje." pasuje do sytuacji, gdy połączenie już jest, ale nie udało się wybrać bazy (np. przy osobnym wywołaniu wyboru bazy lub podaniu błędnej nazwy bazy).
  • "Pomyślnie dodano rekord do bazy." to komunikat sukcesu po wykonaniu zapytania INSERT, a nie obsługa błędu połączenia.
  • "Błąd przetwarzania zapytania SQL" dotyczy niepowodzenia wykonania zapytania (np. błędna składnia SQL, brak uprawnień), czyli etapu mysqli_query(), a nie samego łączenia.

W praktyce warto wyświetlać użytkownikowi ogólny komunikat, a szczegóły (np. z mysqli_connect_error()) zapisywać w logach, aby nie ujawniać informacji wrażliwych.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Oznacza to, że nie udało się zestawić połączenia z serwerem bazy danych. Najczęstsze przyczyny to błędny login/hasło, niedostępny serwer, zły adres hosta lub problem sieciowy. Wtedy warunek typu if (!$conn) wykrywa błąd połączenia.
Błąd połączenia występuje na etapie mysqli_connect() i dotyczy dostępu do serwera. Błąd zapytania pojawia się dopiero przy wykonywaniu polecenia SQL (np. mysqli_query()) i zwykle wynika ze składni SQL, braku tabeli lub uprawnień.
Ponieważ rozszerzenie mysql zostało wycofane i usunięte w nowszych wersjach PHP, więc kod nie będzie działał. W praktyce stosuje się MySQLi albo PDO, które są wspierane i oferują lepsze mechanizmy obsługi błędów oraz bezpieczeństwa.
Po nieudanym połączeniu możesz pobrać opis problemu funkcją mysqli_connect_error(). W środowisku produkcyjnym lepiej zapisać ten opis do logów, a użytkownikowi wyświetlić ogólny komunikat, aby nie ujawniać informacji o konfiguracji serwera.
Nie. Komunikaty widoczne dla użytkownika nie powinny ujawniać danych wrażliwych ani szczegółów konfiguracji. Bezpieczna praktyka to ogólny tekst (np. "Błąd połączenia"), a szczegóły diagnostyczne zapisane po stronie serwera w logach.
Najczęściej: błędne dane logowania, nieuruchomiony serwer bazy, zły host/port, brak dostępu sieciowego (firewall), limit połączeń na serwerze albo brak uprawnień użytkownika. Wszystkie te sytuacje powodują, że mysqli_connect() może zwrócić FALSE.
Taki komunikat ma sens dopiero po udanym połączeniu, gdy aplikacja próbuje wskazać konkretną bazę (np. w parametrze bazy lub osobnym wyborze) i okazuje się, że baza ma złą nazwę albo została usunięta. To inny etap niż samo łączenie z serwerem.
Typowe pomyłki to mieszanie etapów (połączenie vs zapytanie), ignorowanie faktu, że if (!$conn) oznacza błąd połączenia, oraz wybieranie odpowiedzi "z SQL" bez analizy kontekstu. Pomaga czytanie kodu linia po linii i określanie, co jest sprawdzane.
Spotyka się oba podejścia, ale ważne jest rozumienie idei: połączenie może się nie udać i trzeba to obsłużyć. MySQLi często występuje w prostych przykładach proceduralnych, a PDO w podejściu bardziej uniwersalnym (różne bazy) i z wyjątkami.
Przećwicz rozpoznawanie etapów pracy z bazą: połączenie, wybór bazy, wykonanie zapytania, przetwarzanie wyniku. Ucz się, jakie wartości zwracają funkcje i jak je sprawdzać w if. Zwracaj uwagę, czy kod testuje połączenie (connect) czy zapytanie (query).
info

Około 62% zdających odpowiada poprawnie na to pytanie. średnie

Specjaliści zwracają uwagę: "Instrukcja mysqli_connect() zwraca FALSE, gdy nie uda się nawiązać połączenia z serwerem bazy."

Źródła:

  • PHP Manual: mysql_connect — opis wycofania i usunięcia rozszerzenia mysql (informacja: deprecated w 5.5.0, removed w 7.0.0), https://www.php.net/manual/en/function.mysql-connect.php - dostęp 2026-04-02
  • PHP Manual: MySQLi — mysqli_connect(), https://www.php.net/manual/en/function.mysqli-connect.php - dostęp 2026-04-02
  • PHP Manual: mysqli_connect_error(), https://www.php.net/manual/en/function.mysqli-connect-error.php - dostęp 2026-04-02

Materiały:

  • Dokumentacja PHP: mysqli_connect() i obsługa błędów połączenia
  • Dokumentacja PHP: mysql_connect() (informacja o wycofaniu/usunięciu)
  • Materiały kursowe INF.3 dotyczące PHP i integracji z bazą danych

Aktualizacja pytania: 03.04.2026



Aktualizacja pytania: 03.04.2026
📡 Brak połączenia internetowego