Rozszerzenia PHP do komunikacji z bazą danych: mysql, mysqli, PDO
Mirosław Zelent
W celu połączenia się z bazą danych z użyciem PHP możemy teoretycznie skorzystać z trzech możliwych tzw. rozszerzeń (czyli bibliotek) komunikacyjnych. Pierwszą z nich jest mysql (biblioteka jednak wycofana od PHP w wersji 7.0.0), mysqli (gdzie i oznacza improoved, czyli wersję poprawioną, aktualną) albo możemy użyć rozszerzenia o nazwie PDO - PHP Data Objects (w pełni obiektowego).
Poznamy teraz szczegóły dotyczące wszystkich rozszerzeń, jednak zanim to zrobimy zapoznajmy się z definicją akronimu API.
- API
- (ang. Application Programing Interface) - interfejs klas, metod, funkcji, zmiennych, parametrów, których aplikacja PHP używa w celu zrealizowania zaplanowanych przez programistę zadań (w naszym kontekście chodzi o komunikację z bazą danych.
Interfejs API może być albo proceduralny albo obiektowy. Jeżeli jest proceduralny, to oznacza to, że operacje bazodanowe realizowane są przez odpowiednio przygotowane i wywołane funkcje. Każda funkcja wykonuje unikalne, dające się jednoznacznie wyróżnić działanie związane z bazą danych. Parametry przekazujemy do funkcji jako argumenty w nawiasie, w momencie ich wywołania.
Jeśli zaś interfejs API jest obiektowy, to oznacza to, iż w aplikacji są tworzone obiekty (na podstawie "przepisu" klas), a operacje bazodanowe realizowane są poprzez metody (czyli funkcje wewnątrz klas) wywoływane na rzecz tychże stworzonych obiektów. Oprócz metod, obiekty mogą posiadać przypisane atrybuty (parametry, właściwości). Więcej informacji na temat podejścia obiektowego (klasy, obiekty, metody, atrybuty, konstruktory, destruktory itd.) znajdziesz w tym tutorialu.
- Rozszerzenie mysql
- Dodatek wprowadzony w wersji 2.0 specyfikacji języka PHP, został zdeprecjonowany od PHP. 5.5.0 oraz całkowicie usunięty od PHP 7.0.0. Nie zaleca się stosowania mysql we współczesnych projektach - zamiast tej biblioteki powinniśmy użyć mysqli lub PDO. Biblioteka posiada interfejs jedynie proceduralny, brak interfejsu obiektowego.
- Rozszerzenie mysqli (i = ang. improved)
- Dodatek wprowadzony w wersji 5.0 specyfikacji języka PHP, usprawnił i zaktualizował komunikację do tej pory realizowaną biblioteką mysql. To rozszerzenie oferuje zarówno API proceduralne jak i obiektowe. W pełni aktualne, współczesne, zalecane do użycia w nowych projektach. Aczkolwiek w odróżnieniu od dodatku PDO (który potrafi obsłużyć różne silniki bazodanowe), mysqli współpracuje tylko bazami MySQL.
- Rozszerzenie PDO (ang. PHP Data Objects)
- Dodatek wprowadzony również w wersji 5.0 specyfikacji języka PHP, zrealizowany w pełni obiektowo. W pełni aktualne, współczesne, zalecane do użycia w nowych projektach. Jako jedyne rozszerzenie potrafi oprócz MySQL obsłużyć różne silniki bazodanowe, w tym m.in.: PostgreSQL, Oracle, MS SQL, SQLite, IBM DB2, Firebird i wiele innych.
Przyjrzyjmy się teraz porównaniu rozszerzeń w postaci tabelarycznej:
| Rozszerzenie PHP | mysql | mysqli | PDO |
|---|---|---|---|
| Wprowadzono w wersji PHP | 2.0 | 5.0 | 5.0 |
| Wsparcie dla rozszerzenia | zdeprecjonowane od PHP 5.5.0, usunięte od PHP 7.0.0 | aktywnie wspierane | aktywnie wspierane |
| Zalecane dla nowych projektów | nie | tak | tak |
| Interfejs proceduralny | tak | tak | nie |
| Interfejs obiektowy | nie | tak | tak |
| Użycie różnych silników (driverów) SQL | nie | nie | tak |
| Wsparcie funkcji MySQL 5.1+ | nie | tak | większość |
| Prepared Statements po stronie serwera | nie | tak | tak |
| Prepared Statements po stronie klienta | nie | nie | tak |
W technikum nauczymy się korzystać z bazy danych z użyciem biblioteki mysqli (zarówno w metodzie proceduralnej, jak i obiektowej). A co do biblioteki PDO, która jest już tylko obiektowa, to zainteresowanych odsyłam do odcinka piątego serii dedykowanej PHP, gdzie wyjaśniamy i pokazujemy w akcji szczegółowe różnice pomiędzy użyciem mysqli i PDO.

Kody zniżkowe - kup taniej
Mamy fajne rabaty dla widzów naszego kanału YouTube - otóż można zamówić dwa tomy książek "Wprowadzenie do bezpieczeństwa IT" (15% taniej) oraz książkę "Twierdza Linux. Bezpieczeństwo dla dociekliwych" (10% taniej) - użyjcie odpowiedniego kodu, wpisując go w specjalne pole w koszyku:
KOD: pasja
Dostajesz rabat -15%
KOD: pasja
Dostajesz rabat -15%
KOD: pasja-linux
Dostajesz rabat -10%
Pomóż dzieciom
Polska Akcja Humanitarna od wielu lat dożywia dzieci. Prosimy, poświęć teraz dosłownie chwilę i pomóż klikając w oznaczony strzałką zielony brzuszek Pajacyka. Dziękujemy!
Komentarze
Czy macie jakieś pytania, sugestie, uwagi? A może zauważyliście literówkę albo błąd? Dajcie koniecznie znać: kontakt@pasja-informatyki.pl. Dziękujemy za poświęcony czas - to dzięki Wam serwis staje się coraz lepszy!