Podstawy programowania III WYKŁAD 2



Podobne dokumenty
PHP może zostać rozszerzony o mechanizmy dostępu do różnych baz danych:

BAZY DANYCH. Obsługa bazy z poziomu języka PHP. opracowanie: Michał Lech

Internetowe bazy danych

Sprawdzenie czy połączenie przebiegło poprawnie if (mysqli_connect_errno()) { echo Błąd; Połączenie z bazą danych nie powiodło się.

Bazy danych II. Andrzej Grzybowski. Instytut Fizyki, Uniwersytet Śląski

Języki programowania wysokiego poziomu. PHP cz.4. Bazy danych

Wprowadzenie. Rozdział 23 PDO. Podstawowe kroki aplikacji. Źródło danych

Dostęp do baz danych z serwisu www - PHP. Wydział Fizyki i Informatyki Stosowanej Joanna Paszkowska, 4 rok FK

Instalacja MySQL.

Bazy danych w PHP. PHPMyAdmin

Autor: Joanna Karwowska

Wydział Elektrotechniki, Informatyki i Telekomunikacji Instytut Informatyki i Elektroniki

Systemy internetowe. Wykład 4 mysql. West Pomeranian University of Technology, Szczecin; Faculty of Computer Science

Zagadnienia. Konstrukcja bibliotek mysql i mysqli w PHP. Dynamiczne generowanie stron. Połączenie, zapytanie i sesja

5. Współpraca z bazą danych MySQL

Języki skryptowe - PHP. PHP i bazy danych. Paweł Kasprowski. pawel@kasprowski.pl. vl07

PHP: bazy danych, SQL, AJAX i JSON

Wykład 5: PHP: praca z bazą danych MySQL

ZAAWANSOWANE BAZY DANYCH I HURTOWNIE DANYCH MySQL, PHP

Database Connectivity

Część VII Baza danych MySQL i PHP

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Sprzeg podstawowy do baz danych w PHP Mateusz Sowa, 2007

Informatyka I. Standard JDBC Programowanie aplikacji bazodanowych w języku Java

Projektowanie systemów baz danych

Laboratorium nr 4. Temat: SQL część II. Polecenia DML

Bazy danych. Wykład IV SQL - wprowadzenie. Copyrights by Arkadiusz Rzucidło 1

Programowanie w Ruby

Obiektowy PHP. Czym jest obiekt? Definicja klasy. Składowe klasy pola i metody

Informatyka I. Programowanie aplikacji bazodanowych w języku Java. Standard JDBC.

Dostęp do baz danych przy wykorzystaniu interfejsu PDO

Bazy Danych i Usługi Sieciowe

CREATE USER

Bazy danych - wykład wstępny

Bazy danych postgresql programowanie i implementacja

Zajęcia 13 wykorzystanie MySQL w PHP cz. 2

Oracle PL/SQL. Paweł Rajba.

Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8

Programowanie MSQL. show databases; - pokazanie jakie bazy danych są dostępne na koncie

Kontrola sesji w PHP HTTP jest protokołem bezstanowym (ang. stateless) nie utrzymuje stanu między dwoma transakcjami. Kontrola sesji służy do

Systemy GIS Tworzenie zapytań w bazach danych

Administracja bazami danych

strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych

TOPIT Załącznik nr 3 Programowanie aplikacji internetowych

WPROWADZENIE DO BAZ DANYCH

Projektowanie bazy danych. Jarosław Kuchta Projektowanie Aplikacji Internetowych

Aby uruchomić program klienta i połączyć się z serwerem, należy komendę:

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

Metody dostępu do danych

KatMPBSoft - 1 -

Projektowani Systemów Inf.

Paweł Rajba

Zajęcia 11 wykorzystanie MySQL w PHP

Dokumentacja SQL API 1

Odnawialne Źródła Energii I rok. Tutorial PostgreSQL

Zakres tematyczny dotyczący kursu PHP i MySQL - Podstawy pracy z dynamicznymi stronami internetowymi

Aplikacje webowe w obliczu ataków internetowych na przykładzie CodeIgniter Framework

ODBC polecenia i funkcje

Oracle PL/SQL. Paweł Rajba.

PHP + MySQL w laboratorium (1)

Założenia do ćwiczeń: SQL Server UWM Express Edition: \SQLEXPRESS. Zapoznaj się ze sposobami użycia narzędzia T SQL z wiersza poleceń.

Marcin Luckner Politechnika Warszawska Wydział Matematyki i Nauk Informacyjnych

Materiały do laboratorium MS ACCESS BASIC

Dokumentacja interfejsu MySQL. Platforma BSMS.PL Instrukcja podłączenia po przez mysql

DECLARE VARIABLE zmienna1 typ danych; BEGIN

Internetowe bazy danych

T-SQL dla każdego / Alison Balter. Gliwice, cop Spis treści. O autorce 11. Dedykacja 12. Podziękowania 12. Wstęp 15

Wykład 05 Bazy danych

1 Kursory 1. 2 Wyjątki Wyjątki predefiniowane Wyjątki niezdefiniowane wcześniej Definiowanie własnych wyjątków...

15. Funkcje i procedury składowane PL/SQL

Nazwa kwalifikacji: Tworzenie aplikacji internetowych i baz danych oraz administrowanie bazami Oznaczenie kwalifikacji: E.14 Numer zadania: 01

Język SQL, zajęcia nr 1

MongoDB. wprowadzenie. dr inż. Paweł Boiński, Politechnika Poznańska

Bazy danych wykład dwunasty PL/SQL, c.d. Konrad Zdanowski ( Uniwersytet Kardynała Stefana Bazy danych Wyszyńskiego, wykładwarszawa)

TEST E.14 BAZY DANYCH

Java i jej wykorzystanie do tworzenia dynamicznych aplikacji Webowych

PODSTAWY BAZ DANYCH 13. PL/SQL

Administracja i programowanie pod Microsoft SQL Server 2000

SQL 4 Structured Query Lenguage

PLAN WYKŁADU BAZY DANYCH PODSTAWOWE KWESTIE BEZPIECZEŃSTWA OGRANICZENIA DOSTĘPU DO DANYCH

Materiały. Technologie baz danych. Plan wykładu Kursory. Wykład 5: Kursory jawne. Podprogramy. Kursory jawne. Kursory niejawne

koledzy, Jan, Nowak, ul. Niecała 8/23, , Wrocław, , ,

Dlaczego PHP? - zalety

PHP i MySQL dla każdego / Marcin Lis. Wyd. 3. Gliwice, cop Spis treści

Po instalacji serwera MYSQL dostępne jest konto o nazwie root. Domyślnie nie ma ono przypisanego hasła, aczkolwiek podczas procesu konfiguracji jest

Ref. 7 - Język SQL - polecenia DDL i DML

EGZAMIN POTWIERDZAJĄCY KWALIFIKACJE W ZAWODZIE Rok 2019 CZĘŚĆ PRAKTYCZNA

1 LINQ. Zaawansowane programowanie internetowe Instrukcja nr 1

JDBC w LoXiMie. Interfejs Java Database Connectivity dla systemu LoXiM. Adam Michalik 2008

EGZAMIN POTWIERDZAJĄCY KWALIFIKACJE W ZAWODZIE Rok 2019 CZĘŚĆ PRAKTYCZNA

Platforma.NET laboratorium 4 Aktualizacja: 15/11/2013. Visual Basic.NET dostęp do bazy danych. Baza Microsoft SQL Server Compact

Baza numerów Wersja 1.1

Wprowadzenie do BD Operacje na bazie i tabelach Co poza zapytaniami? Algebra relacji. Bazy Danych i Systemy informacyjne Wykład 2.

INSTRUKCJA INSTALACJI DATAMOBILE. Ver. 1.3

PHP. Tematyka wykładów: Język PHP PHP i bazy danych Rozszerzenia PHP

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska

Ogólny plan przedmiotu. Strony WWW. Literatura BAZY DANYCH. Materiały do wykładu:

Bazy danych. Bazy danych. Podstawy języka SQL. Dr inż. Paweł Kasprowski.

Transkrypt:

Podstawy programowania III WYKŁAD 2 Jan Kazimirski 1

Komunikacja z bazami danych 2

PHP i bazy danych PHP zapewnia dostęp do wielu popularnych baz danych. Kilka poziomów abstrakcji: Funkcje obsługujące konkretne bazy danych Biblioteka PEAR DB Biblioteka ADOdb Warstwa PDO 3

PostgreSQL - połączenie Nawiązywanie połączenia: resource pg_connect(string) Funkcja wymaga podania parametrów połączenia Funkcja zwraca uchwyt do bazy danych lub wartość FALSE. 4

PostgreSQL parametry połączenia Łańcuch znakowy w formie klucz=wartość... Parametry: host nazwa serwera bazy danych port numer portu bazy danych dbname nazwa bazy danych user nazwa użytkownika password hasło użytkownika 5

PostgreSQL koniec połączenia Zakończenie połączenia zwykle nie jest konieczne (połączenie zamykane jest automatycznie po zakończeniu skryptu) Zamknięcie połączenia: bool pg_close([resource]) Funkcja zwraca wartość TRUE (powodzenie) lub FALSE (niepowodzenie). 6

PostgreSQL wysłanie zapytania Po uzyskaniu połączenia z bazą danych można do niej przesłać zapytanie SQL Wysłanie zapytania: resource pg_query(resource db,string query) Rezultatem jest uchwyt do rezultatu wykonania kwerendy lub FALSE (niepowodzenie) 7

PostgreSQL pobieranie informacji Rezultat zapytania zwrócony przez funkcję pg_query jest zapakowany - do uzyskania rekordów można użyć różnych funkcji: pg_fetch_row zwraca wiersz w postaci tablicy pg_fetch_assoc zwraca wiersz w postaci tablicy asocjacyjnej pg_fetch_object zwraca wiersz w postaci obiektu 8

PostgreSQL - pg_fetch_row Zwraca rekord (wiersz) rezultatu zapytania w postaci tablicy indeksowanej numerycznie array pg_fetch_row(resource rez [, int wiersz]) Numer wiersza jest opcjonalny. Jeżeli nie podany to zwracany jest kolejny wiersz. W przypadku niepowodzenia funkcja zwraca FALSE. 9

Przykład 1 <?php $db = pg_connect("host=localhost port=54321 dbname=kazimirs". " user=kazimirs password=student113"); $res = pg_query($db,"select * FROM samochody;"); while($row=pg_fetch_row($res)) { echo $row[0]," "; // nr_s echo $row[1]," "; // marka echo $row[2],"\n"; // typ };?> 10

PostgreSQL - pg_fetch_assoc Zwraca rekord (wiersz) rezultatu zapytania w postaci tablicy asocjacyjnej array pg_fetch_assoc(resource rez [, int wiersz]) Numer wiersza jest opcjonalny. Jeżeli nie podany to zwracany jest kolejny wiersz. W przypadku niepowodzenia funkcja zwraca FALSE. 11

Przykład 2 <?php $db = pg_connect("host=localhost port=54321 dbname=kazimirs". " user=kazimirs password=student113"); $res = pg_query($db,"select * FROM samochody;"); while($row=pg_fetch_assoc($res)) { echo $row["nr_s"]," "; // nr_s echo $row["marka"]," "; // marka echo $row["typ"],"\n"; // typ };?> 12

PostgreSQL - pg_fetch_object Zwraca rekord (wiersz) rezultatu zapytania w postaci obiektu (kolumny w postaci atrybutów) object pg_fetch_object(resource rez [, int wiersz]) Numer wiersza jest opcjonalny. Jeżeli nie podany to zwracany jest kolejny wiersz. W przypadku niepowodzenia funkcja zwraca FALSE. 13

Przykład 3 <?php $db = pg_connect("host=localhost port=54321 dbname=kazimirs". " user=kazimirs password=student113"); $res = pg_query($db,"select * FROM samochody;"); while($row=pg_fetch_object($res)) { echo $row->nr_s," "; // nr_s echo $row->marka," "; // marka echo $row->typ,"\n"; // typ };?> 14

PostgreSQL liczba zwróconych wierszy Aby określić liczbę wierszy w rezultacie zapytania można użyć funkcji pg_num_rows: int pg_num_rows(resource rez) Funkcja ta ma sens tylko w przypadku zapytań zwracających rezultaty (SELECT) 15

PostgreSQL liczba kolumn Do uzyskania informacji o liczbie kolumn w wyniku zapytania mozna użyć funkcji pg_num_fields int pg_num_fields(resource rez) Funkcja ma sens tylko w przypadku zapytań zwracających rezultaty. 16

Przykład 4 <?php $db = pg_connect("host=localhost port=54321 dbname=kazimirs". " user=kazimirs password=student113"); $res = pg_query($db,"select marka,typ,kolor FROM samochody;"); while($row=pg_fetch_object($res)) { echo $row->marka," "; // marka echo $row->typ," "; // typ echo $row->kolor,"\n"; // kolor }; echo "Zapytanie zwrocilo ".pg_num_rows($res)." wierszy.\n"; echo "Kazdy rekord sklada sie z ".pg_num_fields($res)." pol.\n";?> 17

PostgreSQL nazwy i typy kolumn Informacje o nazwach kolumn można uzyskać za pomocą funkcji pg_field_name: string pg_field_name(resource zap,int nr) Dodatkowo informację o typie kolumny można uzyskać za pomocą funkcji pg_field_type: string pg_field_type(resource zap, int nr) 18

Przykład 5 <?php $db = pg_connect("host=localhost port=54321 dbname=kazimirs". " user=kazimirs password=student113"); $res = pg_query($db,"select marka,typ,kolor FROM samochody;"); for($f=0;$f<pg_num_fields($res);$f++) echo pg_field_name($res,$f)," "; echo "\n----------------------------\n"; while($row=pg_fetch_object($res)) { echo $row->marka," "; // marka echo $row->typ," "; // typ echo $row->kolor,"\n"; // kolor };?> 19

PostgreSQL liczba modyfikowanych wierszy W zapytaniach typu INSERT, UPDATE, DELETE istotna jest liczba wierszy, które zostały zmodyfikowane (dodane/zmienione/usunięte). Można ją sprawdzić funkcją pg_affected_rows int pg_affected_rows(resource zap) Jeżeli wykonanie zapytania się nie powiodło, funkcja zwróci wartość -1. 20

PostgreSQL- zwalnianie zasobów zapytania Funkcja pg_free_result usuwa rezultaty zapytania i zwalnia zasoby: bool pg_free_result(resource zap) Zwykle wywołanie tej funkcji nie jest konieczne zasoby są zwalniane automatycznie w momencie zakończenia skryptu. 21

Podsumowanie praca z bazą PostgreSQL Typowy schemat korzystania z bazy danych PostgreSQL: 1. Otwarcie połączenia (pg_connect) 2. Wykonanie zapytania (pg_query) 3. Przetworzenie wyników zapytania (pq_fetch_row, pg_fetch_assoc, pg_fetch_object) 4. [ Zamknięcie połaczenia (pg_close) ] 22

MySQL - połączenie Połączenie z bazą MySQL resource mysql_connect(string serwer, string user string hasło, bool nowe_poł, int opcje) Rezultatem wykonania funkcji jest uchwyt do bazy danych, lub FALSE w przypadku niepowodzenia. Zamykanie połączenia: bool mysql_close(resource uchwyt) 23

MySQL wysyłanie zapytań Do przesyłania zapytań do bazy MySQL służy funkcja mysql_query: resource mysql_query(string zap,resurce db) Jeżeli wykonywana jest kwerenda wybierająca (SELECT) to funkcja zwróci uchwyt do rezultatów lub FALSE (niepowodzenie). Dla innych typów zapytań funkcja zwraca TRUE lub FALSE 24

MySQL pobieranie informacji Pobieranie informacji z rezultatu zapytania (uchwyt przekazany przez funkcje mysql_query): array mysql_fetch_row(resource zap) array mysql_fetch_assoc(resource zap) object mysql_fetch_object(resource zap) 25

MySQL pobieranie informacji c.d. Funkcja mysql_data_seek pozwala przesunąć wewnętrzny indeks położenia rekordu w wynikach zwróconych z zapytania pozwala pobrać dowolny rekord bool mysql_data_seek(resource zap, int nr) Funkcja zwraca TRUE (sukces) lub FALSE (niepowodzenie) 26

MySQL inne funkcje Liczba zwróconych wierszy: int mysql_num_rows(resource zap) Liczba pól w zwróconych rekordach int mysql_num_fields(resource zap) Nazwa tabeli w której jest pole rekordu string mysql_field_table(resource zap,int nr) Nazwa pola rekordu danych string mysql_field_name(resource zap,int nr) 27

MySQL inne funkcje c.d. Typ pola rekordu danych string mysql_field_type(resource zap, int nr) Właściwości pola rekordu danych object mysql_fetch_field(resource zap, int nr) name nazwa kolumny table nazwa tabeli max_length max. Liczba znaków w kolumnie Inne właściwości: not_null, primary_key, unique_key, multiple_key, numeric, blob, type 28

MySQL inne funkcje c.d. Określenie liczby zmodyfikowanych wierszy: int mysql_affected_rows(resource db) Zwolnienie zasobów bool mysql_free_result(resource zap) 29

PEAR DB PEAR::DB jest interfejsem API dostępu do baz danych Klasa DB jest częścią biblioteki PEAR Biblioteka ta musi być osobno zainstalowana (nie jest częścią PHP) PEAR::DB izoluje szczegóły bazy danych od reszty aplikacji 30

PEAR::DB - Źródło danych Przy nawiązywaniu połączenia wykorzystywany jest identyfikator źródła danych (DSN Data Source Name) dbtype://user:password@host:port/database dbtype rodzaj bazy danych user:password użytkownik i hasło host:port nazwa hosta i numer portu database nazwa bazy danych 31

PEAR::DB - Połączenie z bazą danych W celu połączenia z bazą danych należy wykorzystać statyczną metodę connect, np: $db =DB::connect($dsn); Rozłączenie z bazą danych: $db->disconnect(); 32

PEAR::DB - Wykonywanie zapytań Do realizacji zapytań służą metody: query(string zap) wysyła do serwera zapytanie nie zwracające rezultatów getall(string zap) rezultat zapytania zwracany jest w 2-wymiarowej tablicy getcol(string zap), getrow(string zap) dla rezultatów zawierających jedną kolumnę lub wiersz wynik zwracany w tablicy getone(string zap) dla zapytania zwracającego jedną liczbę 33

PEAR::DB - Inne metody Liczba zwróconych wierszy $result->numrows() Wynik operacji DB::isError($db) DB::isError($result) Komunikat o błędzie $db->getmessage() $result->getmessage() 34

PDO PHP Data Objects Warstwa abstrakcji dostępu do baz danych wprowadzona do PHP 5.1 W pełni obiektowa, wykorzystuje wyjątki do obsługi błędów Wykorzystuje zaawansowane techniki baz danych (transakcje, kwerendy parametryczne itp.) 35

PDO - Połączenie Nawiązywanie połączenia: $db = new PDO($dsn,$user,$password) $dsn data source name np. 'mysql:host=localhost;dbname=test' 'mysql:dbname=testdb;host=127.0.0.1' Aby zamknąć połączenie wystarczy przypisać do obiektu $db wartość null. 36

PDO Połączenie c.d. Za pomocą parametru połączenia PDO::ATTR_PERSISTENT można uzyskać stałe połączenie z bazą Stałe połączenie z bazą nie jest zamykane po zakończeniu skryptu Zastosowanie stałych połączeń pozwala na efektywniejsze działanie serwera (brak narzutu na otwieranie i zamykanie połączeń) 37

PDO - Transakcje PDO udostępnia obsługę transakcji (dla baz, które je posiadają) za pomocą metod: PDO->beginTransaction() PDO->commit() PDO->rollBack() 38

PDO Przekazywanie zapytań do bazy PDO->exec($zap) przekazuje do bazy zapytanie i zwraca liczbę zmodyfikowanych wierszy PDO->query($zap) przekazuje do bazy zapytanie i zwraca rezultat w postaci obiektu typu PDOStatement. Rezultaty zawarte w obiekcie PDOStatement mogą być uzyskane za pomocą jego metod fetch() i fetchall(). 39

PDO przygotowywanie zapytań Wielokrotnie używane zapytanie można przygotować za pomocą metody PDO->prepare() i symboli zastępczych Raz przygotowane zapytanie można wykonywać wielokrotnie za pomocą jego metody execute() Metoda execute() ma argument w postaci tablicy kolejne elementy tablicy zastepują kolejne symbole zastępcze. 40

PDO Przykład 1 <?php $db = new PDO('pgsql:host=localhost;dbname=jankazim', "jankazim", "secret"); $res = $db->query("select * FROM samochody"); $table = $res->fetchall(); var_dump($table);?> 41

PDO Przykład 2 <?php $db = new PDO('pgsql:host=localhost;dbname=jankazim', "jankazim", "secret"); $query = $db->prepare("select * FROM samochody"); $query->execute(); $res = $query->fetchall(); var_dump($res);?> 42

PDO Przykład 3 <?php $db = new PDO('pgsql:host=localhost;dbname=jankazim', "jankazim", "secret"); $query = $db->prepare("select * FROM samochody where kolor=?"); $query->execute(array("czerwony")); $res = $query->fetchall(); var_dump($res);?> 43

PDO Przykład 4 <?php $db = new PDO('pgsql:host=localhost;dbname=jankazim', "jankazim", "secret"); $query = $db->prepare("select * FROM samochody where kolor =:kolor"); $kolor = "czerwony"; $query->bindparam(":kolor",$kolor); $query->execute(); $res = $query->fetchall(); var_dump($res);?> 44

PDO Przykład 5 <?php try { $db = new PDO('pgsql:host=localhost;dbname=jankazim',"jankazim", "secret"); } catch (PDOException $e) { print "Blad!: ". $e->getmessage(). "\n"; die(); } $res = $db->query("select * FROM samochody"); $table = $res->fetchall(); var_dump($table);?> 45

Podsumowanie Zagadnienia poruszane na wykładzie: Dostęp do bazy PostgreSQL ze skryptu PHP Dostęp do bazy MySQL ze skryptu PHP Wykorzystanie biblioteki PEAR DB do obsługi baz danych z PHP Wykorzystanie mechanizmu PDO do obsługi baz danych z PHP 46