I.Wojnicki, PHP. PHP PHP Hypertext Preprocessor. Igor Wojnicki. Katedra Informatyki Stosowanej Akademia Górniczo-Hutnicza w Krakowie.

Podobne dokumenty
Kurs WWW. Paweł Rajba.

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

PHP 5 język obiektowy

10. Programowanie obiektowe w PHP5

Technologie Internetu PHP

Programowanie w Sieci Internet Blok 2 - PHP. Kraków, 09 listopada 2012 mgr Piotr Rytko Wydział Matematyki i Informatyki

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

Programowanie obiektowe

Polimorfizm, metody wirtualne i klasy abstrakcyjne

Podstawy programowania III

Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016

NoSQL Not Only SQL, CouchDB. I.Wojnicki, NoSQL. Apache CouchDB has started. Time to relax. Igor Wojnicki

Podstawy programowania III WYKŁAD 2

Kurs programowania. Wykład 3. Wojciech Macyna. 22 marca 2019

Programowanie w C++ Wykład 13. Katarzyna Grzelak. 4 czerwca K.Grzelak (Wykład 13) Programowanie w C++ 1 / 26

Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016

Materiały do zajęć VII

Typy metod: konstruktory, destruktory, selektory, zapytania, iteratory.

MVC w praktyce tworzymy system artykułów. cz. 1

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej

Zaawansowane programowanie w języku C++ Programowanie obiektowe

Programowanie obiektowe

NoSQL Not Only SQL: CouchDB. I.Wojnicki, NoSQL. Apache CouchDB has started. Time to relax. Przetwarzanie dokumentów i widoków.

PHP: bloki kodu, tablice, obiekty i formularze

I.Wojnicki, JiTW. PHP PHP Hypertext Preprocessor. Igor Wojnicki. Katedra Informatyki Stosowanej Akademia Górniczo-Hutnicza w Krakowie.

Zaawansowane bazy danych i hurtownie danych studia zaoczne II stopnia, sem. I

ZAAWANSOWANE BAZY DANYCH I HURTOWNIE DANYCH MySQL, PHP

Programowanie obiektowe

Kurs programowania. Wykład 13. Wojciech Macyna. 14 czerwiec 2017

TOPIT Załącznik nr 3 Programowanie aplikacji internetowych

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Programowanie w C++ Wykład 12. Katarzyna Grzelak. 20 maja K.Grzelak (Wykład 12) Programowanie w C++ 1 / 32

Aplikacje Internetowe. Najprostsza aplikacja. Komponenty Javy. Podstawy języka Java

Java: kilka brakujących szczegółów i uniwersalna nadklasa Object

Dokumentacja do API Javy.

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

Zaawansowane programowanie w języku C++ Klasy w C++

Programowanie obiektowe

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

public - może być używana w kodzie poza klasą, jedna klasa ModyfikatorKlasy może być kombinacją wyrażeń:

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

Formularze w PHP dla początkujących

Java: interfejsy i klasy wewnętrzne

Enkapsulacja, dziedziczenie, polimorfizm

Polimorfizm. dr Jarosław Skaruz

I.Wojnicki, Tech.Inter.

Programowanie 2. Język C++. Wykład 3.

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

Java podstawy jęyka. Wykład 2. Klasy abstrakcyjne, Interfejsy, Klasy wewnętrzne, Anonimowe klasy wewnętrzne.

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

Kurs programowania. Wykład 9. Wojciech Macyna

akademia androida Składowanie danych część VI

Języki i metody programowania Java. Wykład 2 (część 2)

MVC w praktyce tworzymy system artykułów. cz. 2

Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1)

Wstęp do Programowania 2

Bazy Danych i Usługi Sieciowe

Programowanie obiektowe

Oracle PL/SQL. Paweł Rajba.

PARADYGMATY PROGRAMOWANIA Wykład 2

Scenariusz Web Design DHTML na 10 sesji. - Strony statyczne I dynamiczne. - Dodawanie kodu VBScript do strony HTML. Rysunek nie jest potrzebny

OBIEKTY PHP. G. Panuś

Aplikacje w środowisku Java

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość

Programowanie obiektowe

Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków

Programowanie obiektowe i zdarzeniowe

Formularze HTML. dr Radosław Matusik. radmat

Wykład 4: Klasy i Metody

Platformy Programistyczne Wykład z Javy dla zaawansowanych

1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie?

Obiektowe bazy danych

SSK - Techniki Internetowe

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Wykład 7: Pakiety i Interfejsy

1. Klasy i obiekty. 2. Definicja klasy

UML a kod w C++ i Javie. Przypadki użycia. Diagramy klas. Klasy użytkowników i wykorzystywane funkcje. Związki pomiędzy przypadkami.

Wydział Elektrotechniki, Informatyki i Telekomunikacji Instytut Informatyki i Elektroniki

Na przykładzie języków Java, C# i odrobiny C++ Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Przypomnienie o klasach i obiektach

PHP: bazy danych, SQL, AJAX i JSON

Zaawansowane programowanie w C++ (PCP)

TEMAT : KLASY DZIEDZICZENIE

Systemy internetowe Wykład 3 PHP

I.Wojnicki, PHP. PHP PHP Hypertext Preprocessor. Igor Wojnicki. Katedra Informatyki Stosowanej Akademia Górniczo-Hutnicza w Krakowie

Smarty PHP. Leksykon kieszonkowy

EGZAMIN 2 (14 WRZEŚNIA 2015) JĘZYK C++

Multimedia JAVA. Historia

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

Dzisiejszy wykład. Wzorce projektowe. Visitor Client-Server Factory Singleton

Marcin Luckner Politechnika Warszawska Wydział Matematyki i Nauk Informacyjnych

I.Wojnicki, PHP. PHP PHP Hypertext Preprocessor. Igor Wojnicki. Ktedra Informatyki Stosowanej Akademia Górniczo-Hutnicza w Krakowie.

Obiektowe programowanie rozproszone Java RMI. Krzysztof Banaś Systemy rozproszone 1

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

Programowanie Komputerów

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

PARADYGMATY PROGRAMOWANIA Wykład 4

Informatyka I. Dziedziczenie. Nadpisanie metod. Klasy abstrakcyjne. Wskaźnik this. Metody i pola statyczne. dr inż. Andrzej Czerepicki

Java Zadanie 1. Aby poprawnie uruchomić aplikację desktopową, należy zaimplementować główną metodę zapewniającą punkt wejścia do programu.

Transkrypt:

Igor Wojnicki (AGH, KIS) 30 maja 2015 1 / 48 Hypertext Preprocessor Igor Wojnicki Katedra Informatyki Stosowanej Akademia Górniczo-Hutnicza w Krakowie 30 maja 2015 $Id: php3.tex,v 1.6 2013/03/17 13:51:24 wojnicki Exp wojnicki $

Igor Wojnicki (AGH, KIS) 30 maja 2015 2 / 48 Spis Treści I 1 Dostęp do zewnętrznych zasobów Wyjatki PDO

Igor Wojnicki (AGH, KIS) 30 maja 2015 3 / 48 Spis Treści Dostęp do zewnętrznych zasobów 1 Dostęp do zewnętrznych zasobów Wyjatki PDO

Igor Wojnicki (AGH, KIS) 30 maja 2015 4 / 48 Dostęp do zewnętrznych zasobów Jak się dostać do czegoś w Internecie Odczytać jak zwykły plik: HTTP wrapper (domyślnie GET). Użyć buiblioteki curl.

Igor Wojnicki (AGH, KIS) 30 maja 2015 5 / 48 Odczyt zasobów, fopen() Dostęp do zewnętrznych zasobów $h=fopen( http://www.google.com, r ); if ($h) { while (($bufor=fgets($h))!=false) { echo $bufor; fclose($h);

Odczyt zasobów, file() i inni Dostęp do zewnętrznych zasobów Założenie: pod adresem http://home.agh.edu.pl/~wojnicki/b.php znajduje się poniższy kod: <?php $komunikat="jest\ncos"; echo $komunikat;?> Przykładowe przetwarzanie liniami: <?php $f=file( http://home.agh.edu.pl/~wojnicki/b.php ); if ($f) { foreach ($f as $line_num => $line) { echo "Linia #<b>{$line_num</b> : ". htmlspecialchars($line). "<br />\n";?> Igor Wojnicki (AGH, KIS) 30 maja 2015 6 / 48

Igor Wojnicki (AGH, KIS) 30 maja 2015 7 / 48 Dostęp do zewnętrznych zasobów Odczyt zasobów, file_get_contents() Podobnie jak file(), ale zwraca łańcuch znaków. echo file_get_contents( http://home.agh.edu.pl/~wojnicki/b.php );

Igor Wojnicki (AGH, KIS) 30 maja 2015 8 / 48 Dostęp do zewnętrznych zasobów Przykład przetwarzania danych JSON Przetwarzanie listy. $dbs=file_get_contents( http://awing.kis.agh.edu.pl:5984/_all_dbs ); if ($dbs) { $dbs_tab=json_decode($dbs,true); foreach ($dbs_tab as $nazwa) { echo $nazwa. <br/> ;

Igor Wojnicki (AGH, KIS) 30 maja 2015 9 / 48 Odczyt zasobów, curl, GET Dostęp do zewnętrznych zasobów $c=curl_init( http://awing.kis.agh.edu.pl:5984 ); /* zwroc dane jako wartosc, a nie stdout */ curl_setopt($c, CURLOPT_RETURNTRANSFER, 1); $dane=curl_exec($c); if ($dane) { curl_close($c); echo $dane;

Igor Wojnicki (AGH, KIS) 30 maja 2015 10 / 48 Odczyt zasobów, curl, POST Dostęp do zewnętrznych zasobów $dok= {"tresc":"zawartosc dokumentu", "autor":"wojnicki" ; $c=curl_init( http://awing.kis.agh.edu.pl:5984/moja1 ); curl_setopt($c, CURLOPT_RETURNTRANSFER, 1); curl_setopt($c, CURLOPT_POST, 1); curl_setopt($c, CURLOPT_HTTPHEADER, array( Content-type: application/json )); curl_setopt($c, CURLOPT_POSTFIELDS, $dok); $dane=curl_exec($c); if ($dane) { curl_close($c); echo $dane;

Igor Wojnicki (AGH, KIS) 30 maja 2015 11 / 48 Powłoka dla CouchDB Dostęp do zewnętrznych zasobów

Igor Wojnicki (AGH, KIS) 30 maja 2015 12 / 48 Powłoka dla CouchDB I Dostęp do zewnętrznych zasobów function checked($source,$value) { if ($source === $value) echo checked="checked" ; $uri=$_post[ uri ]; if ($_POST[ method ] === GET $_POST[ method ] === POST $_POST[ method ] === PUT $_POST[ method ] === DELETE ) $method=$_post[ method ]; $content_type= Content-type:.$_POST[ content ]; $post=$_post[ post ];?> </header> <body>

Igor Wojnicki (AGH, KIS) 30 maja 2015 13 / 48 Powłoka dla CouchDB II Dostęp do zewnętrznych zasobów <h1>input</h1> <p> <form method="post"> URI:<br/> <textarea rows="4" cols="60" name="uri"> <?php echo $uri;?> </textarea> <br/> Method: <input type="radio" name="method" value="get" <?php checked($method, GET )?>/> GET <input type="radio" name="method" value="post" <?php checked($method, POST )?>/> POST <input type="radio" name="method" value="put" <?php checked($method, PUT )?>/> PUT <input type="radio" name="method" value="delete" <?php checked($method, DELETE )?>/> DELETE

Igor Wojnicki (AGH, KIS) 30 maja 2015 14 / 48 Powłoka dla CouchDB III Dostęp do zewnętrznych zasobów <br/> Content type: <input type="text" name="content" size="40" value="application/json"/> <br/> POST/PUT:<br/> <textarea rows="4" cols="60" name="post"> <?php echo stripslashes($post);?></textarea> <br/> <input type="submit"/> <input type="reset"/> </form> </p> <h1>output</h1> <h2>json</h2> <p>

Igor Wojnicki (AGH, KIS) 30 maja 2015 15 / 48 Powłoka dla CouchDB IV Dostęp do zewnętrznych zasobów <?php if (isset($uri)){ $c=curl_init($uri); curl_setopt($c, CURLOPT_RETURNTRANSFER, 1); curl_setopt($c,curlopt_customrequest,$method); if ($method === POST $method === PUT ) { curl_setopt($c, CURLOPT_POSTFIELDS, stripslashes($post)); curl_setopt($c, CURLOPT_HTTPHEADER, array($content_type)); $data=curl_exec($c); if ($data) { curl_close($c); echo $data;?>

Igor Wojnicki (AGH, KIS) 30 maja 2015 16 / 48 Powłoka dla CouchDB V Dostęp do zewnętrznych zasobów <h2>decoded JSON</h2> <pre> <?php // true - konwersja na tablice a nie obiekt print_r(json_decode($data,true));?> </pre> <?php?> </p>

Igor Wojnicki (AGH, KIS) 30 maja 2015 17 / 48 Spis Treści 1 Dostęp do zewnętrznych zasobów Wyjatki PDO

Igor Wojnicki (AGH, KIS) 30 maja 2015 18 / 48 Podejście obiektowe Wprowadzone w wersji 4 (małowydajne) Poprawione w wersji 5.

Igor Wojnicki (AGH, KIS) 30 maja 2015 19 / 48 Klasa Kolekcja własności: metod, zmiennych, stałych.

Definicja klasy <?php class Samochod { public $marka; public $rok_produkcji;?> public function Opis() { return $this->marka. z. $this->rok_produkcji. roku ; $this aktualny obiekt. -> odwołanie do składowej klasy. Igor Wojnicki (AGH, KIS) 30 maja 2015 20 / 48

Igor Wojnicki (AGH, KIS) 30 maja 2015 21 / 48 Tworzenie obiektów Operator new $samochod = new Samochod(); $samochod->marka = Syrena ; $samochod->rok_produkcji = 1979; echo $samochod->opis();

$s2 = new Samochod(); echo $s2->marka; Igor Wojnicki (AGH, KIS) 30 maja 2015 22 / 48 Konstruktor Funkcje magiczne (magic): nazwafunkcji() class Samochod { public $marka = brak danych ; public function construct($nazwa) { $this->marka=$nazwa; Jaki będzie rezultat działania poniższego programu? $s1 = new Samochod( Polonez ); echo $s1->marka;

$s2 = new Samochod(); echo $s2->marka; Igor Wojnicki (AGH, KIS) 30 maja 2015 23 / 48 Wartości domyślne class Samochod { public $marka = brak danych ; public function construct($nazwa) { if (isset($nazwa)) $this->marka=$nazwa; Jaki będzie rezultat działania poniższego programu? $s1 = new Samochod( Polonez ); echo $s1->marka;

Igor Wojnicki (AGH, KIS) 30 maja 2015 24 / 48 Konstruktor Uwaga: Jeżeli klasa podrzędna definiuje swój konstruktor, konstruktor klasy nadrzędnej nie jest domyślnie wywoływany, Należy użyć: parent:: construct()

Igor Wojnicki (AGH, KIS) 30 maja 2015 25 / 48 Destruktor class Samochod {... public function destruct() {...

Igor Wojnicki (AGH, KIS) 30 maja 2015 26 / 48 Widoczność własności (składniki klas) Private tylko dostępne z wewnatrz klasy. Protected dostępne z wewnatrz klasy i klas potomnych. Public dostępne z wewnatrz i zewnatrz.

Igor Wojnicki (AGH, KIS) 30 maja 2015 27 / 48 Samochod, raz jeszcze Getters, setters. class Samochod { private $marka; private $rok_produkcji; public function Opis() { return $this->marka. z. $this->rok_produkcji. roku ; public getmarka() { return $this->marka; public setmarka($m) { $this->marka=$m; public getrok() { return $this->rok; public setrok($r) { if ($r>1900) $this->rok_produkcji=$r else $this->rok_produkcji=1900;

Dziedziczenie Klasa nadrzędna musi być zdefiniowana przed klasa podrzędna. Uwaga: w przykładzie brak getters, setters. class Zwierze { protected $imie; public function Powitanie() { return Jestem zwierzakiem, mam na imie:. $this->imie; class Pies extends Zwierze { public function Powitanie() { return Jestem psem, mam na imie:. $this->imie; Igor Wojnicki (AGH, KIS) 30 maja 2015 28 / 48

Igor Wojnicki (AGH, KIS) 30 maja 2015 29 / 48 Dziedziczenie, przykład $zwierz=new $Zwierze(); echo $zwierz->powitanie(); $pies=new $Pies(); echo $pies->powitanie();

Igor Wojnicki (AGH, KIS) 30 maja 2015 30 / 48 Klasy abstrakcyjne Nie można tworzyć obiektów. Metody również moga być abstrakcyjne. Tylko abstrakcyjna klasa może posiadać abstrakcyjne metody. abstract class Zwierze { protected $imie; protected $wiek; public function Opis() { return $this->imie., wiek:. $this->wiek; abstract public function Powitanie(); Uwaga: w przykładzie brak getters, setters.

Igor Wojnicki (AGH, KIS) 30 maja 2015 31 / 48 Dziedziczenie i klasy abstrakcyjne class Pies extends Zwierze { public function Powitanie() { return "Hau, hau!"; public function Opis() { return parent::opis()., jestem psem. ; Metody abstrakcyjne musza być zdefiniowane, aby móc tworzyć obiekty. parent:: odwołanie do klasy nadrzędnej.

Igor Wojnicki (AGH, KIS) 30 maja 2015 32 / 48 Własności statyczne Własności Metody Słowo klucznowe static Nie moga odwoływać się do własności niestatycznych. Istnieje tylko jedna kopia, dzielona przez wszystkie obiekty. Moga być użyte bez konieczności tworzenia obiektów. self:: odwołanie do klasy bieżacej. NazwaKlasy:: odwołanie do konkretnej klasy.

Igor Wojnicki (AGH, KIS) 30 maja 2015 33 / 48 Stałe class Osoba { const DomyslneNazwisko = "Nowak";... echo Domyślne nazwisko:. Osoba::DomyslneNazwisko; Stałe sa zawsze dostępne publicznie. Przy odwołaniu nie używa się $

Igor Wojnicki (AGH, KIS) 30 maja 2015 34 / 48 Klasa ostateczna Żadna klasa nie może po niej dziedziczyć. final class SamochodMaly extends SamochodKompakt {... final można zastosować do metod, nie pozwalajac na ich reimplementację w podklasach.

Igor Wojnicki (AGH, KIS) 30 maja 2015 35 / 48 Interfejsy Podobne do klas abstrakcyjnych. Nic nie implementuja. interface Wzorzec { public function ustaw($nazwa, $wartosc); public function pobierz($format); class Cos implements Wzorzec { private $dane = array(); public function ustaw($nazwa, $wartosc) { $this->dane[$nazwa] = $wartosc; public function pobierz($format) {...

Igor Wojnicki (AGH, KIS) 30 maja 2015 36 / 48 Właściwości klas, iteracja $klasa = new MojaUlubionaKlasa(); foreach($klasa as $nazwa => $wartosc) { echo "$nazwa => $wartosc\n"; Iteracja po dostępnych składowych klasy (tutaj: tylko składowe public). is_callable() do odróżnienia metod.

Igor Wojnicki (AGH, KIS) 30 maja 2015 37 / 48 Klonowanie przekazywane sa poprzez referencje. Tworzenie kopii obiektów: $kopia_obiektu = clone $obiekt; Tylko płytka kopia. Można zdefiniować konstruktor kopiujacy: clone()

Igor Wojnicki (AGH, KIS) 30 maja 2015 38 / 48 Serializacja serialize() unserialize() $a = new A; $s = serialize($a); // przechowaj $s w pliku file_put_contents( plik_z_obiektem_a, $s); // w innym skrypcie: include("klasaa.php"); /* def. klasy A */ $s = file_get_contents( plik_z_obiektem_a ); $a = unserialize($s); Przykład z: http://www.php.net

Igor Wojnicki (AGH, KIS) 30 maja 2015 39 / 48 Spis Treści Wyjatki 1 Dostęp do zewnętrznych zasobów Wyjatki PDO

Igor Wojnicki (AGH, KIS) 30 maja 2015 40 / 48 Wyjatki Obsługa wyjatków try, catch, throw klasa Excepttion http: //www.php.net/manual/en/language.exceptions.php

Igor Wojnicki (AGH, KIS) 30 maja 2015 41 / 48 Wyjatki, przykład Wyjatki function inverse($x) { if (!$x) { throw new Exception( Division by zero. ); else return 1/$x; try { echo inverse(5). "\n"; echo inverse(0). "\n"; catch (Exception $e) { echo Caught exception:, $e->getmessage(),"\n";

Igor Wojnicki (AGH, KIS) 30 maja 2015 42 / 48 Wyjatki, rezultat Wyjatki 0.2 Caught exception: Division by zero.

Igor Wojnicki (AGH, KIS) 30 maja 2015 43 / 48 Spis Treści PDO 1 Dostęp do zewnętrznych zasobów Wyjatki PDO

Igor Wojnicki (AGH, KIS) 30 maja 2015 44 / 48 PDO PDO: Data Objects Warstwa abstrakcji dostępu do danych. Nie jest to abstrakcja bazy danych. Wykorzystuje podejście obiektowe.

Igor Wojnicki (AGH, KIS) 30 maja 2015 45 / 48 PDO Przykład, baza danych w pamięci Błędy z danymi połaczenia należy przechwycić wyjatek. try { $dbh = new PDO( sqlite::memory:, null, null); $dbh->query( CREATE TABLE FOO (a INTEGER) ); $dbh->query( INSERT INTO FOO VALUES (1) ); $dbh->query( INSERT INTO FOO VALUES (5) ); foreach($dbh->query( SELECT * from FOO ) as $row) { print_r($row); $dbh = null; catch (PDOException $e) { print "Error!: ". $e->getmessage(). "<br/>"; die(); Wyjście: Array ( [a] => 1 [0] => 1 ) Array ( [a] => 5 [0] => 5 )

Igor Wojnicki (AGH, KIS) 30 maja 2015 46 / 48 Przykład PDO try { $dbh = new PDO( sqlite:/home/wojnicki/mojabaza.sql3, null, null); $dbh->query( CREATE TABLE FOO (a INTEGER) ); print_r($dbh->errorcode()); print_r($dbh->errorinfo()); $dbh->query( INSERT INTO FOO VALUES (1) ); $dbh->query( INSERT INTO FOO VALUES (5) ); foreach($dbh->query( SELECT * from FOO ) as $row) { print_r($row); $dbh = null; catch (PDOException $e) { print "Error!: ". $e->getmessage(). "<br/>"; die();

Igor Wojnicki (AGH, KIS) 30 maja 2015 47 / 48 Rezultat PDO Za pierwszym razem: 00000 Array ( [0] => 00000 ) Array ( [a] => 1 [0] => 1 ) Array ( [a] => 5 [0] => 5 ) Za drugim razem: HY000 Array ( [0] => HY000 [1] => 1 [2] => table FOO already exists ) Array ( [a] => 1 [0] => 1 ) Array ( [a] => 5 [0] => 5 ) Array ( [a] => 1 [0] => 1 ) Array ( [a] => 5 [0] => 5 )

Igor Wojnicki (AGH, KIS) 30 maja 2015 48 / 48 Klasa PDO PDO construct ( string $dsn [, string $username [, string $password [, array $driver_options ]]] ) bool begintransaction ( void ) bool commit ( void ) mixed errorcode ( void ) array errorinfo ( void ) int exec ( string $statement ) mixed getattribute ( int $attribute ) array getavailabledrivers ( void ) bool intransaction ( void ) string lastinsertid ([ string $name = NULL ] ) PDOStatement prepare ( string $statement [, array $driver_options = array() ] ) PDOStatement query ( string $statement ) string quote ( string $string [, int $parameter_type = PDO::PARAM_STR ] ) bool rollback ( void ) bool setattribute ( int $attribute, mixed $value )