Problem w tle
Wiele aplikacji PHP wciąż boryka się z zagrożeniem SQL Injection, a programiści nie chcą już patrzeć na przestarzałe mysql_* funkcje.
Czym jest PDO?
PHP Data Objects – jedyny, wszechstronny interfejs łączący się z bazą danych, niezależnie od jej typu.
Jedna warstwa, różne silniki
MySQL, PostgreSQL, SQLite, Oracle – wszystkie pod jednym dachem. Jeden kod, milion możliwości.
Dlaczego warto przejść na PDO?
Bezpieczeństwo. Przygotowane zapytania (prepared statements) zamykają drzwi przed atakami.
Wydajność. Używaj jednego połączenia, wymieniaj jedynie parametr.
Elastyczność. Przełączasz bazę w locie, nie zmieniając logiki aplikacji.
Jak zacząć?
Po pierwsze, zainicjuj obiekt PDO. nhlzaklady.com pokazuje przykład w kilku linijkach.
Po drugie, ustaw tryb raportowania wyjątków – dzięki temu wiesz od razu, gdzie popełniasz błąd.
Po trzecie, przygotuj zapytanie, wiąż parametry i wywołaj.
Praktyczny kod
$dsn = ‘mysql:host=localhost;dbname=sklep’; $user = ‘root’; $pass = ”; $pdo = new PDO($dsn, $user, $pass, [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]);
$stmt = $pdo->prepare(‘SELECT * FROM produkty WHERE kategoria = :kat’); $stmt->bindValue(‘:kat’, $kategoria, PDO::PARAM_STR); $stmt->execute(); $wyniki = $stmt->fetchAll(PDO::FETCH_ASSOC);
Najczęstsze pułapki
Nie zamykaj połączenia ręcznie – PDO zrobi to sam, kiedy skrypt się zakończy.
Unikaj dynamicznego budowania zapytań w stringach – to wróci cię w twarz.
Nie lekceważ try-catch – bez obsługi wyjątków nie zobaczysz, co poszło nie tak.
Twoje kolejne kroki
Refaktoryzuj stare mysql_* wywołania do PDO, zacznij od najważniejszych punktów wejścia.
Testuj pod kątem wydajności, używaj profilu Xdebug.
Dokumentuj każdy przygotowany statement, bo później nie zgubisz się w morzu zapytań.
Wdrożenie jest proste – podłącz się, przygotuj, wywołaj i kontroluj.