PDO (PHP Data Objects) – to sterownik napisany w języku PHP, pozwalający komunikować się z różnymi bazami danych np: MySQL, PostgreSQL, SQL Server, Oracle itd. Zaleta jest oczywista. Twórca witryny może stworzyć elastyczny interfejs uruchamiany na różnych serwerach bez konieczności tworzenia nakładek. Poza tym PDO ma obiektową składnię i jest szybszy oraz bezpieczniejszy w porównaniu z innymi rozwiązaniami.
 

POŁĄCZENIE Z SERWERWM BAZY (new PDO)

Kod zawarty jest wewnątrz instrukcji obsługi wyjątków try catch. Na początku tworzony jest nowy obiekt klasy (new PDO). Do konstruktora przekazujemy parametry połączenia, w kolejności:

  • rodzaj bazy (w powyższym przykładzie: mysql),
  • host (np: host=localhost)
  • nazwa bazy (dbname=nazwa bazy)
  • login do bazy (user)
  • hasło do bazy (password)

Opcjonalnie można ustawić PORT (jeśli jest wymagany):

 

KONFIGURACJA PARAMETRÓW PDO (setAttribute)

Za pomocą metody setAttribute możemy już na samym wejściu skonfigurować niektóre parametry pracy z PDO, np:

Stałe PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ustawiają żądanie, aby wszelkie błędy zapytania raportowane były jako wyjątki.
 

ZAPYTANIE DO BAZY (query)

Kwerendy SQL wprowadzamy do metody query().

Metoda query() zwraca obiekt wyników zapytania SQL. W pętli foreach pobieramy do tablicy asocjacyjnej wyniki i wyświetlamy je na stronie. Metoda closeCursor() zamyka zbiór wyników. Metoda ta jest wymagana, inaczej nie będzie można wysłać kolejnego zapytania.
 

WBUDOWANE ATRYBUTY PRZESTRZENI PDO

Za pomocą stałych atrybutów z przestrzeni PDO, można określić typ zwracanych danych w formie tablicy asocjacyjnej lub innej.

  • PDO::FETCH_NUM – zwraca tablicę z numerami kolumn,
  • PDO::FETCH_BOTH – zwraca tablicę z numerami i nazwami kolumn,
  • PDO::FETCH_OBJ – zwraca obiekt z atrybutami kolumn,
  • PDOStatement::fetch() – pobiera pojedynczy rekord z wyniku; może być używana wiele razy – każde wywołanie pobierze nowy rekord,
  • PDOStatement::fetchAll() – pobiera wszystkie rekordy z wyniku,
  • PDOStatement::fetchColumn() – pobiera wartość kolumny z wyniku; może być używana wiele razy – każde wywołanie pobierze nowy rekord.

 

MODYFIKOWANIE ZAWARTOŚCI BAZY DANYCH (exec)

Metoda exec() pozwala wykonać zapytania SQL niezwracające zbioru wyników, np: INSERT lub UPDATE.

 

BINDOWANIE (bindValue i prepare)

Bindowanie (podpinanie) – pozwala wysłać do bazy szkielet zapytania, do którego podpina się dane za pomocą metody bindValue($parametr, $wartość, $typ danych). Bindowanie zabezpiecza zapytania SQL przed atakami typu SQL Injection.

Przykład:

Za pomocą bindowania można z łatwością pobrać i wyświetlić rekordy z tabeli:

Metoda rowCount() pozwala pobrać liczbę rekordów zapytania:

Więcej informacji znajdziesz w manualu: php.net/manual/en/book.pdo.php