PHP & MySQL Skripta

of 22/22
PHP - MYSQL
  • date post

    04-Jul-2015
  • Category

    Documents

  • view

    1.083
  • download

    1

Embed Size (px)

Transcript of PHP & MySQL Skripta

PHP - MYSQL

SADRAJUVOD....................................................................................................................................3 PHP MySQL..........................................................................................................................4 1.1 Konekcija na MySql server...........................................................................................4 1.2 Kreiranje baze i tabela (naredba CREATE DATABASE i CREATE TABLE).................6 1.3 Ubacivanje podataka u bazu (naredba INSERT INTO).................................................7 1.4 itanje podataka iz baze (naredba SELECT)...............................................................9 1.5 Brisanje podataka (naredba DELETE)........................................................................12 1.6 Izmena postojeih podataka (naredba UPDATE)......................................................14 2 PHP I POVEZIVANJE SA DRUGIM BAZAMA PODATAKA..............................................18

2

UVODTroslojna arhitektura predstavlja tip klijent-server arhitekture u kojoj su korisniki interfejs, procesi poslovne logike i pristup podacima, projektovani i upravljani kao nezavisni moduli. Osnovne komponente (slojevi) ove arhitekture su: Klijentski (prezentacioni) sloj Sloj poslovne (aplikativne) logike Sloj podataka

Slika 1 Troslojna arhitektura web aplikacija

Preko PHP-a kao skriptnog jezika na serverskoj strani, realizuje se najvei deo poslovne logike aplikacije. Podaci vezani za aplikaciju se mogu skladititi u obinom tekstualnom fajlu, iz kojeg se pomou PHP mogu itati i upisivati. Meutim, ako je u pitanju ozbiljnija aplikacija, neophodno je koristiti relacione baze podataka. Najee, ovo znai da e se korsititi server baze podataka koji podraava SQL (Structured Query Language) specifikaciju. SQL je standardni programski jezik za pristup i manipulaciju podacima iz relacionih baza podataka i podran je od strane svih servera relacionih baza podataka. U relacionim bazama podaci su skladiteni preko niza tabela. Svaka tabela sadri kolone koje opsiuju atribute podataka, a svaki red je instanca podataka.

3

Relational Data Base Management Systems (RDBMS), odnosno sistemi za upravljanje relacionim bazama podataka su se u praksi pokazali kao najbolji nain upravljanja podacima.

PHP MySQLPHP podrava API-je za pristup svim poznatim bazama podataka. U ovoj skripti se obrauje povezivanje PHP sa MySQL bazama podataka. MySQL je efikasan server za upravljanje bazama podataka. Predstavlja opensource reenje sa odlinim performansama.

1.1

Konekcija na MySql server

Da bi se moglo upravljati podacima iz baze, neophodno je uspostaviti konekciju sa serverom na kojem se ta baza nalazi. Serveri se nalaze na mrei i njima se pristupa pomou IP-a ili domene (hosta). Uz podatak o hostu servera, potrebni su korisniko ime i lozinka da bi se uspeno povezalo na server i komuniciralo sa njim. U PHP postoji ugraena funkcija za povezivanje sa serverom mysql_connect. Funkcija vraa broj koji je referenca ka uspostavljenoj konekciji, ili false ukoliko konekcija nije uspela. Konekcija ostaje otovrena sve dok se ne pozove funkcija mysql_close ili dok se ne izvri PHP skript. U sledeoj tabeli su date neke od osnovnih funkcija za spajanje na MySQL server. Naziv funkcije mysql_connect Sintaksa mysql_connect(ime servera:port, korisniko ime, ifra ukoliko postoji). Opis Povezuje PHP skriptu sa MySQL bazom. Ako je baza zatiena ifrom, ifra se mora uneti kao parameter. mysql_close (naziv promenljive Zatvara PHP konekciju kojoj je dodeljna vrednost sa bazom. mysql_connect funkcije) mysql_query( upit koji se izvrava U okviru ove naredbe se nad MySQL bazom, naziv moe koristiti bilo koji promenljive kojoj je dodeljena upit: za kreiranje tabele, vrednost mysql_connection()) za kreiranje baze, za popunjavanje baze, auriranje baze, itanje iz baze... mysql_error() Izvetava o mysql greci mysql_select_db(ime_baze) Bira MySQL bazu nad kojom e vriti upite

mysql_close mysql_query

mysql_error mysql_select_db

4

Primer 1 : Spajanje na MySql server Pomou fajla konekcija.php se vri povezivanje sa serverom na kojem je smetena baza

Ukoliko su MySql funkcijama dati tane podaci rezultat skripte bi trebalo da bude prazna stranica. Samo spajanje sa serverom se obavlja pomou mysql_connect funkcije. Funkciji se prosleuju tri argumenta. Prvi je host na kom se nalazi server. Ovde se moe uneti IP ili hostname servera, ali skoro uvek se radi o alliasu localhost na IP 127.0.0.1 (barem kod veine komercijalnih hosting providera). Drugi argument je korisniko ime pomou koje se spaja, a trei lozinka za tog korisnika. Ukoliko su svi dati podaci tani, pa je mysql pristupaan i operacionalan funkcija e vratiti spoj sa serverom. Ako je neka od informacija netana ili se neto desilo sa samim MySql serverom funkcija vraa false. Jo jedna vrlo bitna stvar je proveravati uspeh operacije spajanja. Naime, skoro uvek itava poslovna logika aplikacije zahteva uspenu konekciju na server. Sledei korak pri spajanju sa MySql serveom je odabir baze. Mysql_select_db funkcija kao prvi argument dobija ime baze koja se koristi, a kao drugi vezu tj spoj na MySql server gde se ta baza nalazi. Poto je spoj (rezultat mysql_connect funkcije) ubaen u varijablu $db ona je prosleena na drugo mesto. Ovo nije obavezni argument, tj. mogao je biti izostavljen pa mysql_select_db funkciju pozvati u mysql_select_db("baza") obliku i sve bi i dalje radilo. Radi se o tome da PHP automatski pamti poslednju otvorenu vezu na MySql server pa je uvek po defaultu koristi u svim mysql funkcijama gdje je taj argument izostavljen (recimo u funkciji koja izvrava neki SQL upit na serveru). No, ukoliko se u skripti spaja na dva razliita servera, ili ostvaruju dve zasebne veze na isti server i ne koristi taj argument u MySql funkcijama PHP e uvek koristiti onu vezu koja je poslednja otvorena. Tako da se u toj situaciiji mora prosleivati ona varijabla koja u sebi sadri onaj spoj na kom treba izvriti neka operaciju. U sledeoj tabeli dat je kratak prikaz SQL upita (SQL query) o kojima e biti rei u nastavku teksta: Sintaksa upita Funkcija CREATE DATABASE ime_baze Kreira novu bazu u MySQL RDBMS u CREATE TABLE ime_tabele ( Kreira tabelu u okviru selektovane baze Ime_kolone1 tip podataka (velicina), podataka. Navode se imena svih kolona i Ime_kolone2 tip podataka (velicina), tipovi podataka koje e podravati ove Ime_kolone3 tip podataka (velicina) kolone. Za tipove podataka u MySQL u, . pogledati reference za MySQL. ) INSERT INTO ime_tabele (ime_kolone1, Ubacuje konkretne vrednosti u kreiranu ime_kolone2, ime_kolone3) VALUES tabelu u MySQL bazi podataka. 5

(vrednost_za_kolonu1, vrednost_za kolonu2, vrednost_za_kolonu3) SELECT ime_kolone1,ime_kolone2, ime_kolone3, ime_koloneN FROM ime_tabele. (umesto naziva kolona moe se staviti * , to je dkorer znak da je sve selektovano). SELECT ime_kolone1,ime_kolone2, ime_kolone3, ime_koloneN FROM ime_tabele WHERE ime_kolone=vrednost SELECT ime_kolone1,ime_kolone2, ime_kolone3, ime_koloneN FROM ime_tabele ORDER BY ime_kolone (desc). UPDATE ime_tabele SET ime_kolone=nova_vrednost WHERE ime_kolone=stara_vrednost DELETE FROM ime_tabele WHERE ime_kolone=neka_vrednost

Selektuje odabrane, ili sve kolone iz tabele

Selektuje odabrane kolone na osnovu zadatog kriterijuma. Selektuje odabrane kolone iz tabele i razvrstava ih u opadajuem ili rastuem redosledu na osnovu neke kolone. Ako se ne navede Desc, po default u se podrazumeva rastui redosled. Menja konkretne vrednosti iz odreene tabelu na osnovu zadatih kriterijuma.

1.2 Kreiranje baze i tabela (naredba CREATE DATABASE i CREATE TABLE)1Da bi se omoguilo uvanje podataka, kao i manipulacija njima, neophodno je pre svega postaviti bazu na server. Za kreiranje baze se koristi komanda CREATE DATABASE. Kada je u pitanju WAMP server instaliran na lokalnom raunaru, delu za upravljanje bazama podataka se pristupa pomou opcije phpMyAdmin ili jednostavnim unoenjem adrese u adressbar browser-a http://localhost/phpmyadmin/. Bazu je najlake kreirati unoenjem imena baze i biranjem opcije create (dugme smeteno u sredinjem delu prozora). Ova akcija je ekvivalentna upitu:CREATE DATABASE `bazanovosti` ;

Nakon kreiranja baze, potrebno je redom unositi tabele u bazu. Tabele se preko komandnog panela ubacuju jednostavnim unosom imena tabele i definisanjem broja polja. Ekvivalentan rezultat se dobija ako se izvri upit nad bazom :CREATE TABLE `novosti` ( `idnovost` INT( 20 ) NOT NULL AUTO_INCREMENT , `naslov` VARCHAR( 20 ) NOT NULL , `tekst` VARCHAR( 45) NOT NULL , PRIMARY KEY ( `idnovost` ));

Konano, baza ima strukturu kao na slici1

Svi primeri obraeni u ovoj skripti podrazumevaju rad preko WAMP servera. Ukoliko postoji kompatibilnost verzija, svi primeri bi trebalo da budu validni i za druge sline solucije Apache servera i MySQL baze podataka. 6

1.3 Ubacivanje INSERT INTO)

podataka

u

bazu

(naredba

Baza i njoj pripadajue tabele su u poetku prazne nemaju podataka. Osnovna operacija za unos podataka je INSERT INTO. Podaci se preko komandnog panela ubacuju izborom opcije INSERT. Upit kojim se ubacuju podaci u tabelu novosti :INSERT INTO `novosti` ( `idnovost` , `naslov` , `tekst` ) VALUES ( '', 'Naslov1', 'Ovo je prva vest' ), ( '', 'Naslov2', 'Ovo je druga vest')

Kod naziva tabele je vrlo bitno napisati njeno ime u pravilom caseu jer su imena baza, tabela i polja case sensitive. Kao to se vidi, u zagradama su navedena polja tabele, ali jedno nedostaje. Polje idnovost nije navedeno i ne radi se o greci u pisanju. Naime, ukoliko se neko polje izostavi u listi njemu se automatski upisuje defaultna vrednost (koja se moe postaviti pri stvaranju tabele). U ovom sluaju je pri stvaranju tabele polju idnovost data auto_increment osobina koja pri svakom insertu tom polju pridruuje po defaultu vrednost veu za 1 od poslednje upisane. Nakon liste polja dolazi VALUES ime se naznaava da sledi lista vrednosti koja se ubacuje u tablicu. Vrednost koja se ubacuje u jedno od polja mora biti na istoj poziciji u listi vrednosti kao i ime polja u koje e se sauvati u listi polja. Kod stvaranja liste polja nije bitan redosled. Bitno je jedino da se ime polja u svojoj listi pozicijom poklapa sa vrednosti u listi vrednosti Jedna od osnovnih funkcionalnosti PHP skriptova je ubacivanje podataka u bazu. Najee se podaci prikupljaju od korisnika. U tekstu sledi primer ubacivanja podataka prikupljenih preko forme. Primer: Unos podataka u bazu preko forme Unos vesti Unos novosti Naslov :
Tekst :