Lekcja 9. Połączenie PHP z bazą danych (mysqli)
ŚredniPo 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
Napisz skrypt łączący się z dowolną bazą danych z Twojego XAMPP i wypisujący komunikat sukcesu albo błędu.
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).
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.