PHP proširenja za rad sa bazama podataka Postoje pojedinačna proširenja za različite tipove baza podataka sa svojim bibliotekama funkcija npr. postoji

Слични документи
PDO

PowerPoint Presentation

Microsoft Word - MySQL_3.doc

Microsoft PowerPoint - 6. Query Builder.pptx

Slide 1

Fakultet tehničkih nauka, Novi Sad Predmet: ISIBP

Baze podataka MySQL Community Server i MySQL Workbench

Introduction to Programming

Microsoft Word - SYLLABUS -Dinamicki

Microsoft Word - WP_kolokvij_2_rjesenja.doc

Introduction to Programming

(Microsoft PowerPoint - 412_Buni\346 HTV.ppt [Compatibility Mode])

(Microsoft PowerPoint - 903_\216nidari\346_Java Persistence.pptx)

Microsoft PowerPoint - Programski_Jezik_C_Organizacija_Izvrsnog_Programa [Compatibility Mode]

SVEUČILIŠTE JOSIPA JURJA STROSSMAYERA U OSIJEKU ELEKTROTEHNIČKI FAKULTET Sveučilišni studij KOMUNIKACIJA KLIJENATA U DISTRIBUIRANOJ JAVA APLIKACIJI Di

Upitni jezik SQL

Introduction to Programming

Database Programming with SQL kurs 2017 database design and programming with sql students slajdovi 17-1 Controlling User Access Davanje dozvole (grant

PowerPoint Presentation

Introduction to Programming

Upute za instaliranje WordPressa 1.KORAK Da biste instalirali Wordpress, najprije morate preuzeti najnoviju verziju programa s web stranice WordPressa

Slide 1

ARHITEKTURA I ORGANIZACIJA RAČUNARA

Primenjeno programiranje - Vežbe

UPUTSTVO ZA PODEŠAVANJE MOBILNIH UREĐAJA ZA MMS

Funkcije predavač: Nadežda Jakšić

QlikView Training

R u z v e l t o v a 5 5, B e o g r a d, t e l : , e - m a i l : p r o d a j p s i t. r s, w w w. p s i t. r s

NAPOMENA: Studenti na ispit donose kod urađenog zadatka

Програмирај!

Baza podataka

R u z v e l t o v a 5 5, B e o g r a d, t e l : ( ) , m a i l : c o n t a c p s i t. r s, w w w. p s i t. r s

PowerPoint Presentation

Računarski praktikum II - Predavanje 03 - Apache Web server

Model podataka

Microsoft PowerPoint - 01 Uvod u operativne sisteme.ppt

Microsoft PowerPoint - 6. CMS [Compatibility Mode]

Sveučilište u Zagrebu Fakultet prometnih znanosti Zavod za inteligentne transportne sustave Katedra za primijenjeno računarstvo Vježba: #7 Kolegij: Ba

03 SUBP

Principi softverskog inženjerstva O predmetu

Slide 1

CPHP_19

PuTTY CERT.hr-PUBDOC

COMARC/A Format

KATALOG ZNANJA IZ INFORMATIKE

PowerPoint Presentation

UPITI NAD JEDNOM TABELOM 1. Izdvojiti šifre svih knjiga select K_SIF from K 2. Izdvojiti šifre knjiga iz tabele K uz imenovanje kolone select K_SIF as

PROMENLJIVE, TIPOVI PROMENLJIVIH

Microsoft Word - 405_Prodan_kon.doc

P11.3 Analiza zivotnog veka, Graf smetnji

01 SUBP

Tutoring System for Distance Learning of Java Programming Language

Računarski praktikum I - Vježbe 09 - this, static

_Outlook

Baza fakultet sadrži 3 tabele: tabela studenti sadrzi informacije o studentima Njeni atributi su: indeks indeks studenta (primarni kljuc) ime ime stud

Računarske mreže Čas 2 Ivana Tanasijević Matematički fakultet, Beograd 1

Web programiranje i primjene - Osnovni pojmovi WEB tehnologije korišteni u kolegiju

Microsoft PowerPoint - Programski_Jezik_C_Organizacija_Izvornog_Programa_I_Greske [Compatibility Mode]

MEĐIMURSKO VELEUČILIŠTE ČAKOVEC RAČUNALSTVO PATRIK MIHOCI Izrada modela za objektno relacijsko povezivanje podataka u okviru aplikacije za opis predme

Kombinatorno testiranje

PowerPoint Presentation

Slide 1

УПУТСТВО ЗА КОРИСНИКА Приступ локацији часописа Српски архив за целокупно лекарство добија се преко internet adrese: Након

PowerPoint Presentation

Programiranje u C-u ili C++-u Pseudo-slučajni brojevi; Dinamička alokacija memorije 1 ZADACI SA ČASA Zadatak 1 Napraviti funkciju koja generišlučajan

Modeliranje, implementacija i administracija baza podataka

Повезивање са интернетом

3.Kontrlne (upravlja~ke) strukture u Javi

Fina pain001 konverter - Korisnička uputa eksterno_ožujak 2016

4. Веза између табела практичан рад 1. Повежите табеле Proizvodi и Proizvođači у бази података Prodavnica.accdb везом типа 1:N. 2. Креирајте табелу St

DIGITALNA OBRADA SLIKE

PHP kod

VELEUČILIŠTE U BJELOVARU Upute za postavljanje Gmail računa Lipanj, 2018

DWA2

Kako preziveti katastrofu

CLI

Inženjering informacionih sistema

PowerPoint Presentation

Razvoj programa, Code::Blocks, struktura programa, printf, scanf, konverzioni karakteri predavač: Nadežda Jakšić

JAВА ПРОГРАМИРАЊЕ Сврха обуке за Јава програмирање је стицање знања и вештина у области Јава програмирања са циљем повећања броја квалификованих ИТ ст

Kako spriječiti petlju

Biz web hosting

QFD METODA – PRIMER

12 Stanje

Microsoft PowerPoint - 12-Funkcije_1.ppt [Compatibility Mode]

MIP-heuristike (Matheuristike) Hibridi izmedu metaheurističkih i egzaktnih metoda Tatjana Davidović Matematički institut SANU

Microsoft PowerPoint - Topic02 - Serbian.ppt

Microsoft PowerPoint - 13-Funkcije_2.ppt [Compatibility Mode]

Корисничко упутство апликације езапослени верзија Рачунски центар Електротехничког факултета, Универзитет у Београду

Slide 1

Microsoft PowerPoint - Topic02 - Serbian.ppt

ВАЖИ ЗА СВЕ БАНКЕ

Fra Serafina Schoena Rijeka MB: MBO: Žiro račun: kod RBA d.d. GSM:

Uvod u računarstvo 2+2

ZA MEDICINSKE USTANOVE INTELIGENTAN WI-FI d'.;,.. SISTEM ZA ZADOVOLJNE PACIJENTE I POSETIOCE

8 LINQ upiti LINQ (Language Integrated Query upit integrisan u jezik) jeste skup mogućnosti koje jezik C# i Framework pružaju za pisanje strukturirani

Upute-podesavanj -accounta

Корисничко упутство апликације езапослени верзија Рачунски центар Електротехничког факултета, Универзитет у Београду

Programski jezik C

Транскрипт:

PHP proširenja za rad sa bazama podataka Postoje pojedinačna proširenja za različite tipove baza podataka sa svojim bibliotekama funkcija npr. postoji podrška za IBM DB2, Oracle, Ingres, MySQL, PostgreSQL, SQLite, dbase, filepro, Fokus je na PDO proširenju jer nudi data-access abstraction: bez obzira na bazu podataka koja se koristi, koriste se iste funkcije za postavljanje upita i dohvatanje podataka PDO ne nudi i database abstraction: ne vrši se emulacija ili rewriting upita u skladu sa tipom baze koja se koristi (u te svrhe se može koristiti npr. proširenje PEAR DB, MDB2, ADODb, ) PDO (PHP Data Objects) Pogledati: http://php.net/manual/en/book.pdo.php Povezivanje: Povezivanje sa bazom se ostvaruje kreiranjem instance PDO klase i konekcija se smatra otvorenom sve dok postoji kreirani PDO objekat $db= new PDO('mysql:localhost;dbname=list', 'veb', 'veb'); Argumenti su: tzv. dsn (data source name) niska sa naznakom tipa baze, mrežnog imena, po potrebi porta, i imena baze korisničko ime šifra atributi konekcije PDO::ATTR_CASE kontrola imenovanja kolona rezultata PDO::ATTR_PERSISTENT kontrola trajnosti konekcije PDO::ATTR_ERRMODE kontrola nivoa grešaka PDO::ATTR_AUTOCOMMIT commit nakon svakog sql iskaza.. koji se mogu podesiti i naknadno na nivou instance metodom setattribute() npr. $db->setattribute(pdo::attr_case, PDO::ATTR_LOWER) Rezultat $db je instanca klase PDO

U slučaju greške se generiše izuzetak tipa PDOException i odgovornost je programera da ga dohvati i obradi (u suprotnom postoji rizik od ispisa stek trace-a i prikaza važnih podataka npr. ako je u php.ini datoteci servera postavljeno display_errors svojstvo) try{ $db=new PDO('mysql:localhost;dbname=', 'uvit', 'uvit', array(pdo::attr_persistent=>true));... $db=null; }catch(pdoexception $e){ echo e->getmessage(); exit(); } Priprema upita: metoda prepare $stmt=$db->prepare( select * from list where id=:id ); pripremljeni upit je tipa PDOStatement na mestu gde se trebaju javiti stvarne vrednosti uvode se tzv. čuvari mesta (en. placeholders) pogodnosti koje priprema upita nosi: brzina: jednom pripremljen upit (analiziran, optimizovan sa utvrđenim planom izvršavanja) se može više puta izvršavati sigurnost: vrši se razdvajanje logike baze od logike podataka pa je opsnost od napada minimizovana (npr. od SQL injekcija) vrednosti čuvara mesta se mogu zadati prilikom izvršavanja (npr. funkcijom execute) ili unapred, mehanizmom vezivanja što bi značilo da se svaki put prilikom izvršavanja upita koriste trenutne vrednosti vezanih promenljivih prilikom vezivanja je moguće zadati i tipove podataka (provere zgodne zbog sigurnosti aplikacije): PDO::PARAM_STR (podrazumevani tip, niska), PDO::PARAM_INT, PDO::PARAM_BOOL, PDO::PARAM_NULL, PDO::PARAM_LOB

vezivanje parametra za čuvare mesta: 1. način: imenovanje čuvara mesta $stmt=$db->prepare( insert into t values (:username, :password, :email) ); $stmt->bindparam( :username, $username, PDO::PARAM_STR); $stmt->bindparam( :password, $password, PDO::PARAM_STR); $stmt->bindparam( :email, $email, PDO::PARAM_STR); čuvar mesta se može javiti samo jednom u upitu ako je potrebno istu vrednost upotrebiti na više mesta moraju se upotrebiti različiti čuvari 2. način: numerisanje čuvara mesta $stmt=$db->prepare( insert into t values (?,?,?) ); $stmt->bindparam(1, $username, PDO::PARAM_STR); $stmt->bindparam(2, $password, PDO::PARAM_STR); $stmt->bindparam(3, $email, PDO::PARAM_STR); 3. način: direktnim navođenjem prilikom izvršavanja $stmt=$db->prepare( insert into t values (:username, :password, :email) ); $stmt->execute(array('username'=> Pera, 'password'=> fdser3, 'email'=> pera@gmail.com )); ili $stmt=$db->prepare( insert into t values (?,?,?) ); $stmt->execute(array($username, $password, $email)); Izvršavanje upita: metode query i exec za izvršavanje nepripremljenih upita: $db->exec( select * from list where id=4 ); $db->query( select * from list where id=4 ); exec vraća samo broj redova rezultata (za sve tipove upita), dok query vraća kao rezultat ili PDOStatement objekat ili false u slučaju greške

metoda execute za izvršavanje pripremljenih upita: $stmt->execute(); $stmt mora biti objekat koji predstavlja pripremnljen upit, povratna vrednost je true ili false dok rezultat izvršavanja ostaje na nivou $stmt objekta Obrada rezultata: metoda fetchall(): za dohvatanje svih redova rezultata rezultat je niz ili false u slučaju greške metoda fetch(): za dohvatanje pojedinačnih redova rezultata kada nema više redova fetch() vraća false inače, vraća po dve vrednosti za svaku kolonu jedna vrednost ima za indeks ime kolone, a druga vrednost ima za indeks redni broj kolone npr. $row=$result->fetch(); $row[1], $row['username'], $row[2], $row['password'], argument metode fetch() utiče na tip rezultata: PDO::FETCH_BOTH podrazumevano PDO::FETCH_NUM rezultat je niz, a indeksi su samo numeričke vrednosti PDO::FETCH_ASSOC rezultat je niz, a indeksi su samo imena kolona PDO::FETCH_OBJ rezultat je niz objekata (primeraka klase ) čija su svojstva imenovana kolonama način rada fetch() metode se može podesiti i sa setfetchmode() metodom slično važi i za funkciju fetchall() Prebrojavanje skupa rezultata: za INSERT, UPDATE I DELETE iskaze metoda rowcount() za SELECT iskaz count(fetchall()) broj kolona se može dobiti pozivom metode columncount()

Obrada grešaka: Različite metode rezultiraju različitim tipovima grešaka: konstruktor PDO klase generiše izuzetak, prepare, execute i fetch vraćaju false vrednost. Umesto analize pojedinačnih tipova grešaka, uniformniji i preporučljiviji način za obradu grešaka je, recimo, da se na nivou PDO objekta postavi atribut PDO::ATTR_ERRMODE na vrednost PDO::ATTR_EXCEPTION i da se prilikom pojave greške prijavi izuzetak tipa PDOException koji se dalje može obrađivati u okviru catch bloka Na nivou klase PDOException javno su dostupne: svojstva: errorinfo informacije o grešci poslednjeg izvršenog upita u pitanju je niz koji sadrži SQL 92 SQLSTATE kod greške, kod specifičan za drajver koji se koristi i tekstualni opis greške javne metode: getmessage() - za očitavanje tekstualnog opisa greške getcode() - za očitavanje SQL koda greške getfile() - za očitavanje imena datoteke u kojoj se javila greška getline() - za očitavanje linije u kojoj se greška javila gettrace() i gettraceasstring() - za dobijanje stack-traca u formi niza ili niske