KWALIFIKACJA INF3 - TEST WIEDZY NR 1

PYTANIE NR 40.
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);

// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully";
?>
Co robi powyższy fragment kodu?
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Fragment inicjuje obiekt mysqli z parametrami hosta, użytkownika, hasła i nazwy bazy, czyli podejmuje próbę połączenia z istniejącą bazą.
Potem sprawdza, czy wystąpił błąd połączenia (connect_error) i w razie problemu kończy działanie, a przy sukcesie wypisuje komunikat.

Pełne wyjaśnienie:

Pokazany skrypt w PHP służy przede wszystkim do nawiązania połączenia z serwerem bazy danych i wybraną bazą. Dzieje się to w linii, w której tworzony jest obiekt: new mysqli($servername, $username, $password, $dbname). Podanie czterech parametrów oznacza, że aplikacja próbuje zalogować się na serwer DB (np. MySQL/MariaDB) jako wskazany użytkownik i ustawić domyślną bazę do pracy.

Następnie wykonywana jest kontrola błędu połączenia: sprawdzane jest pole connect_error. Gdy połączenie się nie uda (złe dane logowania, brak uprawnień, serwer niedostępny, baza nie istnieje), skrypt kończy działanie przez die(...) i wypisuje komunikat o niepowodzeniu. Jeśli błędu nie ma, wypisywany jest komunikat Connected successfully, co informuje o poprawnym zestawieniu połączenia.

Dlaczego pozostałe odpowiedzi nie pasują?

  • "Tworzy nową bazę danych." — w kodzie nie ma polecenia SQL typu CREATE DATABASE ani wywołania metody wykonującej takie zapytanie. Samo utworzenie obiektu połączenia nie tworzy bazy.
  • "Tworzy nowego użytkownika dla bazy danych." — tworzenie użytkownika odbywa się po stronie serwera DB (np. zapytaniami CREATE USER/GRANT). Tu używane są jedynie dane istniejącego konta do logowania.
  • "Sprawdza status połączenia z bazą danych." — skrypt faktycznie sprawdza, czy wystąpił błąd połączenia, ale jest to krok wtórny. Operacją kluczową jest zestawienie połączenia; sprawdzenie connect_error jest tylko walidacją, czy to połączenie się powiodło.

W praktyce taki fragment umieszcza się na początku aplikacji (przed zapytaniami SQL), aby nie wykonywać dalszych operacji, gdy brak jest poprawnego połączenia z bazą.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Konstruktor mysqli tworzy obiekt połączenia do serwera bazy danych i próbuje od razu zestawić połączenie na podstawie podanych danych (host, użytkownik, hasło, baza). Jeśli dane są błędne albo serwer jest niedostępny, połączenie się nie powiedzie i trzeba obsłużyć błąd.
Ponieważ samo wywołanie new mysqli() nie gwarantuje, że połączenie się udało. Sprawdzenie connect_error pozwala wykryć problem (np. złe hasło, brak bazy, brak uprawnień) i przerwać wykonywanie skryptu, zanim aplikacja zacznie wykonywać zapytania SQL.
Nie. Ten fragment jedynie łączy się z serwerem i wskazaną bazą. Tworzenie bazy wymagałoby wykonania zapytania SQL typu CREATE DATABASE (np. metodą query()) oraz odpowiednich uprawnień. W pokazanym kodzie nie ma żadnego zapytania tworzącego.
Nie. Użytkownik jest tu tylko użyty do logowania. Tworzenie kont w DB odbywa się poleceniami administracyjnymi po stronie serwera (np. CREATE USER i nadanie uprawnień), zwykle wykonywanymi przez administratora lub w panelu hostingu. Skrypt aplikacji zwykle nie tworzy użytkowników DB.
$dbname to nazwa bazy danych, którą aplikacja chce ustawić jako domyślną po połączeniu. Dzięki temu późniejsze zapytania SQL mogą odnosić się do tabel bez podawania pełnej nazwy z prefiksem bazy. Jeśli baza nie istnieje lub użytkownik nie ma do niej dostępu, pojawi się błąd połączenia.
Najczęściej: błędny host (np. inny niż lokalny), zła nazwa użytkownika lub hasło, brak uprawnień do bazy, nieistniejąca baza, wyłączony serwer DB albo blokada portu. Na egzaminie warto pamiętać, że błąd połączenia dotyczy warstwy dostępu do DB, a nie składni zapytań SQL.
Zwykle na początku żądania, zanim wykonasz jakiekolwiek zapytania SQL (SELECT/INSERT/UPDATE). Często robi się to w osobnym pliku konfiguracyjnym dołączanym do wielu podstron. Dzięki temu aplikacja ma jedno miejsce konfiguracji i łatwiej jest obsłużyć błąd połączenia w spójny sposób.
Połączenie rozpoznasz po utworzeniu obiektu/uchwytu połączenia (np. mysqli) i danych logowania. Tworzenie bazy wymaga wykonania konkretnego zapytania administracyjnego (np. CREATE DATABASE). Jeśli w kodzie nie ma zapytania SQL tworzącego bazę, to skrypt jej nie zakłada, tylko próbuje z niej korzystać.
To dowód, że udało się zestawić połączenie i wybrać bazę, ale nie gwarantuje poprawności przyszłych zapytań. Zapytania mogą się nie udać z innych powodów (błędna składnia SQL, brak tabeli, brak uprawnień do konkretnej tabeli). Dlatego połączenie to dopiero pierwszy krok.
Częsty błąd to uznanie, że linia z new mysqli() "tworzy bazę" albo "tworzy użytkownika". mysqli to interfejs do połączenia i wykonywania zapytań. Operacje administracyjne muszą być wyrażone jako konkretne zapytania SQL lub wykonane w narzędziu administracyjnym, a nie samą inicjalizacją połączenia.
info

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

Źródła:

  • PHP Manual: mysqli::__construct — opis tworzenia połączenia i parametrów konstruktora, https://www.php.net/manual/en/mysqli.construct.php - accessed 2026-02-27
  • PHP Manual: mysqli::$connect_error — obsługa błędu połączenia, https://www.php.net/manual/en/mysqli.connect-error.php - accessed 2026-02-27
  • PHP Manual: die — zakończenie działania skryptu, https://www.php.net/manual/en/function.die.php - accessed 2026-02-27

Materiały:

  • Dokumentacja PHP: klasa mysqli i obsługa błędów połączenia
  • Materiały szkolne z INF.3 dotyczące dostępu do baz danych w PHP
  • Ćwiczenia: napisanie skryptu łączącego się z DB i wykonującego proste SELECT

Aktualizacja pytania: 31.03.2026

Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego