Dataczwartek, 13 sierpnia 2026 Czas19:03:03
← Aplikacje internetowe (PHP)

Lekcja 9. Połączenie PHP z bazą danych (mysqli)

Średni

Po co się tego uczymy?

To jest moment, w którym dwa światy, których uczyłeś się osobno — SQL i PHP — łączą się w jedną, prawdziwą aplikację internetową. Bez tej lekcji strona mogłaby co najwyżej wypisywać dane wpisane na sztywno w kodzie, a nie prawdziwe dane z bazy.

Teoria

Wszystko, czego nauczyłeś się w dziale "Bazy danych i SQL", teraz połączysz z PHP. Do rozmowy z bazą MySQL/MariaDB z poziomu PHP służy biblioteka mysqli (MySQL Improved).

Podstawowe kroki:
1. Połącz się z serwerem: mysqli_connect(serwer, użytkownik, hasło, nazwa_bazy).
2. Sprawdź, czy połączenie się udało.
3. Wykonaj zapytanie: mysqli_query($polaczenie, "SELECT ...").
4. Zamknij połączenie na końcu: mysqli_close($polaczenie).

W XAMPP domyślne dane połączenia to: serwer "localhost", użytkownik "root", hasło puste (""). To bezpieczne wyłącznie na Twoim komputerze do nauki — nigdy tak na serwerze produkcyjnym (przypomnij sobie lekcję o uprawnieniach z działu Bazy danych i SQL).

Schemat

PHP (skrypt .php)  ---mysqli_connect--->  Serwer MySQL/MariaDB
       |                                        |
       |<---- obiekt połączenia $polaczenie ----|
       |
       |---- mysqli_query($polaczenie, "SELECT ...") --->  baza danych
       |<---- wynik zapytania ---------------------------|

Przykład z życia

Każda strona serwisu filmowego, którą będziesz budować w tym dziale — katalog filmów, logowanie, koszyk — zaczyna się dokładnie od tego samego pierwszego kroku: nawiązania połączenia z bazą danych.

Kod (PHP)

<?php
$serwer = "localhost";
$uzytkownik = "root";
$haslo = "";
$nazwaBazy = "serwis_filmowy";

$polaczenie = mysqli_connect($serwer, $uzytkownik, $haslo, $nazwaBazy);

if (!$polaczenie) {
    die("Błąd połączenia z bazą danych: " . mysqli_connect_error());
}

echo "Połączono z bazą danych pomyślnie!";

// tutaj w kolejnych lekcjach będą zapytania SQL

mysqli_close($polaczenie);

Komentarz i wyjaśnienie kodu

mysqli_connect() zwraca albo obiekt połączenia (gdy się udało), albo false (gdy się nie udało) — dlatego zaraz po nim sprawdzamy if (!$polaczenie) i w razie błędu przerywamy działanie skryptu funkcją die(), wypisując dokładny komunikat błędu przez mysqli_connect_error(). To bardzo ważny nawyk — bez tego sprawdzenia błędy połączenia objawiałyby się dziwnymi, trudnymi do zrozumienia błędami w dalszej części kodu. mysqli_close() na końcu zwalnia połączenie — dobra praktyka, choć PHP i tak zamknie je automatycznie po zakończeniu skryptu.

Ćwiczenie samodzielne

Zmień nazwę bazy danych na jedną z tych, których używałeś w dziale Bazy danych i SQL (np. sklep_komputerowy) i sprawdź, czy połączenie się powiedzie.

Zadania do pracy własnej

  1. Napisz skrypt łączący się z dowolną bazą danych z Twojego XAMPP i wypisujący komunikat sukcesu albo błędu.

  2. Rozbuduj skrypt połączenia tak, żeby w razie błędu wypisywał również nazwę serwera i bazy, z którą próbował się połączyć (przydatne przy debugowaniu).

  3. Napisz funkcję polaczZBaza(), która zwraca gotowe połączenie mysqli (albo kończy skrypt przez die() w razie błędu) — tak, żeby można było jej użyć w wielu różnych plikach zamiast powtarzać ten sam kod połączenia (to przygotowanie pod "współdzielony plik połączenia", którego użyjesz w kolejnych lekcjach).

Typowe błędy

Najczęstszy błąd to literówka w nazwie bazy danych albo próba połączenia z bazą, która jeszcze nie istnieje (najpierw utwórz ją w phpMyAdmin). Drugi błąd: brak uruchomionej usługi MySQL w XAMPP Control Panel — połączenie zawsze zawiedzie, dopóki usługa nie jest zielona. Trzeci: pozostawienie hasła "root" zamiast pustego stringa — w domyślnej instalacji XAMPP użytkownik root nie ma hasła.

Nawiązanie do egzaminu zawodowego

To realizacja efektu INF.03.5.4.5 ("stosuje biblioteki do obsługi bazy danych, odpowiednie dla języka i frameworka") — połączenie z bazą to absolutny fundament pod resztę tego działu i typowy pierwszy krok w zadaniu praktycznym na egzaminie, gdy wymagana jest aplikacja korzystająca z bazy danych.