Aplikacja internetowa działająca po stronie serwera (np. napisana w PHP) bardzo często pobiera, zapisuje lub modyfikuje dane w bazie SQL. Współpraca aplikacji z bazą ma określony, stały schemat — i znajomość tej kolejności to klasyczne pytanie egzaminacyjne w kwalifikacji INF.03 (Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych).
Nie można wykonać zapytania SQL bez wcześniejszego połączenia z serwerem bazy danych — to logiczna podstawa wszystkich operacji.

Poprawna kolejność działań
Standardowa sekwencja operacji aplikacji z bazą SQL:
- Nawiązanie połączenia z serwerem baz danych — aplikacja łączy się, podając adres hosta, użytkownika, hasło i ewentualnie port.
- Wybór bazy danych — wskazanie konkretnej bazy na serwerze (na jednym serwerze może być wiele baz).
- Wykonanie zapytania SQL — wysłanie polecenia (
SELECT,INSERT,UPDATE,DELETE,CREATEitd.). - Pobranie i przetworzenie wyników — odczyt danych zwróconych przez bazę (zwykle dla
SELECT) i ich wyświetlenie na stronie. - Zamknięcie połączenia — zwolnienie zasobów serwera po zakończeniu pracy.
Każdy z tych kroków odpowiada konkretnej funkcji w języku programowania (w PHP są to funkcje rodziny mysqli_* lub pg_*).
Przykład w PHP — biblioteka MySQLi
// 1. Połączenie z serwerem
$conn = mysqli_connect("localhost", "user", "haslo", "sklep");
if (!$conn) {
die("Brak połączenia z bazą danych");
}
// 2-3. Wykonanie zapytania SQL
$result = mysqli_query($conn, "SELECT nazwa, cena FROM produkty");
// 4. Pobranie i wyświetlenie wyników
while ($row = mysqli_fetch_assoc($result)) {
echo $row["nazwa"] . " - " . $row["cena"] . " zł<br>";
}
// 5. Zamknięcie połączenia
mysqli_close($conn);
W tym przykładzie wybór bazy odbywa się od razu w mysqli_connect() (czwarty parametr). Można też zrobić to osobno funkcją mysqli_select_db($conn, "sklep").
Funkcje połączenia — mysqli_connect, pg_connect
MySQL — mysqli_connect()
mysqli_connect($a, $b, $c, $d)
Argumenty kolejno:
$a— adres serwera (host), np."localhost",$b— nazwa użytkownika bazy danych,$c— hasło użytkownika,$d— nazwa bazy danych (opcjonalnie — można też wybrać później funkcjąmysqli_select_db).
Aby funkcja zwróciła poprawne połączenie, wszystkie te dane muszą być prawidłowe.
PostgreSQL — pg_connect()
Funkcja pg_connect w PHP służy do nawiązania połączenia z bazą danych PostgreSQL (a nie MySQL!). Składnia różni się od mysqli — parametry przekazuje się jako jeden napis (DSN):
$conn = pg_connect("host=localhost dbname=sklep user=admin password=tajne");
Więcej w haśle pg_connect.
Wykonanie zapytania — mysqli_query, stara mysql_query
Po połączeniu wysyła się zapytanie SQL:
$result = mysqli_query($conn, "SELECT * FROM mieszkancy");
Funkcja zwraca:
- obiekt wyniku (lub
true) — gdy zapytanie się powiedzie, false— gdy zapytanie nie powiedzie się (np. błąd składni SQL, brak tabeli, brak uprawnień, zerwane połączenie).
Dlatego typowy schemat sprawdzenia błędu wygląda tak:
$x = mysqli_query($conn, "SELECT * FROM mieszkancy");
if (!$x) echo "Błąd wykonania zapytania";
Komunikat „Błąd wykonania zapytania" pojawi się, gdy $x ma wartość false — czyli zapytanie się nie powiodło. To częsta forma pytania CKE.
Stara funkcja mysql_query vs nowa mysqli_query
W starszych materiałach widać mysql_query, mysql_connect itd. — to przestarzała biblioteka, usunięta z PHP od wersji 7.0. Obecnie używa się:
- MySQLi (
mysqli_query,mysqli_connect,mysqli_close) — proceduralna i obiektowa, - PDO (
PDO,PDOStatement) — uniwersalna, obsługuje wiele typów baz.
Na egzaminie jednak mysql_query wciąż występuje w pytaniach historycznych — logika działania jest taka sama, tylko nazwy funkcji.
Sprawdzanie błędu połączenia
Po mysqli_connect() warto sprawdzić, czy połączenie się udało:
$a = mysqli_connect('localhost', 'adam', 'mojeHaslo');
if (!$a) echo "Brak połączenia z serwerem bazy danych";
Gdy zmienna $a ma wartość false (!$a jest prawdą), wyświetla się komunikat o braku połączenia z serwerem. To częsty wzorzec — w pytaniach CKE pojawia się fragment kodu z if (!$a) echo "..." i trzeba uzupełnić treść komunikatu.
Pobieranie wyników — mysqli_fetch_*
Wynik zapytania SELECT to zbiór wierszy. Aby je pobrać, używa się funkcji mysqli_fetch_*:
mysqli_fetch_assoc($result)— zwraca wiersz jako tablicę asocjacyjną ($row["nazwa"]),mysqli_fetch_row($result)— zwraca wiersz jako tablicę indeksowaną ($row[0]),mysqli_fetch_array($result)— zwraca jedno i drugie naraz,mysqli_fetch_object($result)— zwraca wiersz jako obiekt ($row->nazwa).
Aby wyświetlić wszystkie rezultaty zapytania, używa się pętli:
while ($row = mysqli_fetch_assoc($result)) {
echo $row["nazwa"] . "<br>";
}
Pętla while wykonuje się dopóki funkcja zwraca kolejny wiersz. Gdy wierszy zabraknie, zwraca null i pętla się kończy.
Więcej w hasłach mysqli_fetch_row, mysqli_num_rows.
Zamknięcie połączenia — mysqli_close
Po zakończeniu pracy z bazą należy zamknąć połączenie, aby nie zużywać niepotrzebnie zasobów serwera:
mysqli_close($conn);
W PHP, aby poprawnie zakończyć połączenie z bazą danych MySQL, ostatnim krokiem powinno być użycie polecenia mysqli_close(). To kolejne typowe pytanie egzaminacyjne.
Analogicznie dla PostgreSQL: pg_close($conn).
Więcej w haśle mysqli_close.
Frameworki PHP i systemy CMS
Aplikacje komunikujące się z bazą SQL pisze się rzadko od zera — częściej używa się frameworków i systemów CMS.
Co wchodzi w skład frameworka?
Typowy framework programistyczny (np. Laravel, Symfony, CodeIgniter) zawiera:
- biblioteki funkcji i klas pomocniczych,
- gotowe komponenty (logowanie, formularze, walidacja),
- wzorce projektowe (najczęściej MVC — Model-View-Controller),
- mechanizmy ORM do obsługi baz danych,
- system rutingu (mapowanie URL na akcje),
- system szablonów do renderowania widoków,
- narzędzia CLI do automatyzacji zadań.
CMS Joomla — wymagania środowiska
System CMS Joomla! to gotowa aplikacja webowa napisana w PHP, korzystająca z bazy SQL. Aby ją zainstalować, potrzebne jest środowisko zawierające:
- serwer WWW (Apache, Nginx),
- interpreter PHP (zalecana aktualna wersja),
- bazę danych SQL (MySQL lub MariaDB, ewentualnie PostgreSQL).
To popularnie nazywane środowisko LAMP (Linux + Apache + MySQL + PHP) lub WAMP/XAMPP na Windowsie.
Funkcje napisane w PHP
Funkcja w PHP to wydzielony fragment kodu, który można wywoływać wielokrotnie z różnymi argumentami. Funkcja użytkownika służy m.in. do:
- wykonywania operacji obliczeniowych,
- przetwarzania danych (formatowanie, walidacja),
- operacji na bazie danych (np. funkcja
pobierzProdukt($id)), - enkapsulacji logiki — żeby nie powtarzać kodu.
Tworzy się ją słowem kluczowym function:
function powitaj($imie) {
return "Witaj, $imie!";
}
echo powitaj("Anna"); // Witaj, Anna!
Więcej w haśle funkcje w PHP.
Najczęstsze błędy egzaminacyjne
Typowe pułapki w pytaniach o komunikację z bazą SQL:
- ustawienie wyboru bazy przed połączeniem z serwerem — logicznie niemożliwe,
- próba wykonania zapytania bez wcześniejszego połączenia,
- mylenie
pg_connectz MySQL —pg_connectto PostgreSQL, - mylenie
mysqli_query()zmysqli_fetch_*()— pierwsza wysyła zapytanie, druga pobiera wiersz, - brak zamknięcia połączenia lub umieszczenie
mysqli_close()przed pobraniem wyników.
Częste pomyłki — nie myl tego!
mysqli_*≠mysql_*—mysql_*to przestarzała biblioteka (usunięta z PHP 7+),mysqli_*to jej następczyni.mysqli_*≠pg_*—mysqli_*to MySQL/MariaDB,pg_*to PostgreSQL.mysqli_querynie zwraca danych bezpośrednio — zwraca obiekt wyniku, z którego trzeba pobrać wiersze przezmysqli_fetch_*.mysqli_close()to ostatni krok, nie pierwszy — łatwa pułapka w pytaniach o kolejność.- CMS Joomla wymaga PHP + bazy danych + serwera WWW — nie wystarczy sam PHP ani sama baza.
- Framework to nie CMS — framework to biblioteka narzędzi (np. Laravel), CMS to gotowa aplikacja (np. Joomla, WordPress).
if (!$x)to sprawdzenie błędu — gdy zmienna$xjestfalse(np. po nieudanym zapytaniu), warunek jest prawdziwy.
Najważniejsze do zapamiętania
Aplikacja webowa komunikuje się z bazą SQL w stałej kolejności: połączenie → wybór bazy → zapytanie → pobranie wyników → zamknięcie połączenia. W PHP do MySQL używa się funkcji mysqli_* (połączenie: mysqli_connect, zapytanie: mysqli_query, pobranie: mysqli_fetch_assoc, zamknięcie: mysqli_close). Do PostgreSQL — funkcji pg_* (np. pg_connect). Sprawdzenie błędu robi się przez if (!$conn) echo "...". Frameworki dostarczają biblioteki i wzorce (najczęściej MVC), CMS typu Joomla to gotowa aplikacja wymagająca PHP + serwera WWW + bazy SQL.