Reklama
Wizyt
Dzisiaj: 73Wszystkich: 653272

Biblioteka PDO

Technikum » PAI » Język PHP » Bazy danych w PHP » Biblioteka PDO

 

PDO (ang. PHP Data Objects) jest rozszerzeniem języka PHP, które udostępnia jednolity, uniwersalny interfejs do komunikacji z bazami danych w technice obiektowej. Od wersji 5.1 jest elementem środowiska PHP i poza dodaniem sterowników dla wykorzystywanych baz danych nie wymaga innych działań. Sterowniki różnych baz danych udostępniają takie same metody, chociaż mogą również dodawać własne, specyficzne metody.
Zaletą PDO jest to, że tworzone skrypty mogą korzystać z tych samych metod, niezależnie od wykorzystywanej bazy. Kolejną zaletą jest walidacja danych wysyłanych w zapytaniach oraz filtrowanie tych danych pod kątem zabezpieczeń przed atakami.
Dostępne są sterowniki między innymi dla baz: MySQL, PostgreSQL, SQLite, Oracle, MS SQL/Sybase.

 

Nawiązanie połączenia


Aby nawiązać połączenie z bazą danych, należy za pomocą konstruktora utworzyć nowy obiekt klasy PDO w postaci:

  • źródło danych — inaczej DSN (ang. Data Source Name), jest to specjalny ciąg znaków opisujący rodzaj bazy danych i sposób połączenia. Zawiera takie informacje, jak nazwa sterownika, adres serwera, nazwa bazy, numer portu.
  • opcje — to tablica zawierająca dodatkowe opcje związane z połączeniem.

Parametrem wymaganym jest źródło_danych. Pozostałe mogą być pominięte. Wersja uproszczona źródła danych dla MySQL wygląda następująco:

  • nazwa_serwera — określa nazwę lub adres serwera baz danych, np. localhost, 127.0.0.1.
  • numer_portu— port, przez który nastąpi połączenie z bazą danych. Jeżeli parametr zostanie pominięty, przyjęta będzie wartość standardowa.
  • nazwa_bazy— nazwa bazy, z którą nastąpi połączenie.

 

Przykład


W podanym przykładzie źródło danych pozwoli na nawiązanie połączenia z bazą moja_baza znajdującą się na serwerze MySQL pracującym na lokalnym komputerze. Połączenie będzie realizowane na porcie 3306.


Przykład




W podanym przykładzie ciąg źródło danych został przypisany do zmiennej $dsn. Utworzony obiekt klasy PDO został przypisany do zmiennej $pdo. Jeżeli podczas nawiązywania połączenia wystąpi błąd, zostanie zgłoszony wyjątek PDOException. Musi on zostać przechwycony, ponieważ domyślny komunikat o błędzie, który wygeneruje PHP, wyświetli nazwę użytkownika i hasło do bazy danych.

UWAGA
PDO posiada obsługę błędów opartą na wyjątkach. Jeżeli zgłoszone wyjątki nie zostaną obsłużone, to skrypt zakończy działanie z komunikatem PHP. a w przypadku błędu podczas łączenia z bazą będzie on zawierał login i hasło do bazy danych.

 

Kończenie połączenia


Połączenie, które zostało nawiązane za pomocą obiektu PDO, istnieje aż do momentu usunięcia obiektu z pamięci. Obiekt zostanie usunięty automatycznie po zakończeniu działania skryptu. Można go również usunąć, przypisując zmiennej obiektowej przechowującej odwołanie do obiektu wartość null.


Przykład




Pobieranie danych


Zapytanie pobierające dane jest wysyłane za pomocą metody query(). Treść zapytania jest przekazywana do tej metody w postaci argumentu.



Metoda query() zwraca obiekt klasy PDOStatement, który zawiera wynik wykonania zapytania.


Przykład




W podanym przykładzie metoda query() zwraca wynik wykonania zapytania. Następnie za pomocą pętli foreach kolejne wiersze wyniku zostaną zapisane do tablicy asocjacyjnej $wiersz i będą wyświetlone instrukcją echo. Po zakończeniu wyświetlania wyników połączenie zostanie zamknięte.

 

Aktualizacja danych


Zapytania służące do aktualizacji danych typu INSERT czy UPDATE i inne, które nie zwracają wyników, są wysyłane za pomocą metody exec(). Po wykonaniu zapytania metoda ta zwraca liczbę określającą ilość zmodyfikowanych wierszy.


Przykład



W podanym przykładzie metoda exec() wysyła zapytanie dodające nowe wiersze do tabeli oraz zwraca liczbę dodanych wierszy. Następnie informacja ta jest wyświetlana. Jeżeli operacja nie została wykonana poprawnie, pojawią się odpowiednie komunikaty


 

Zadanie

 

Zmodyfikuj skrypt z podanego wyżej przykładu tak, aby dane do tabeli były wprowadzane za pomocą formularza wyświetlanego na stronie internetowej.
          
   


Reklama