Povezivanje PHP-a i MySQL baze
U ovom odeljku ćemo naučiti kako da pristupamo MySQL bazi podataka preko jezika PHP. Obradićemo osnove korišćenja originalne mysql ekstenzije (biblioteke funkcija) za PHP. Vodite računa - ovaj način rada koristimo samo u svrhu učenja. U "pravoj web aplikaciji" se radi na malo drugačiji način.
Možda je upravo i dobra ideja da krenemo sa učenjem "nebezbednog" načina, kako bismo shvatili njegove nedostatke.
U ovom tekstu ćemo se upoznati sa tri osnovne funkcije.
Funkcija | Značenje |
---|---|
mysql_connect(server, user, pass, novo, flags) | Uspostavljanje veze prema MySQL serveru |
mysql_close(link) | Prekid veze sa serverom |
mysql_select_db(baza, link) | Izbor baze podtaka sa kojom radimo |
mysql_connect()
Da bismo bilo šta mogli da radimo sa bazom podataka, moramo prvo da uspostavimo vezu, odnosno kreiramo konekciju prema serveru baze podataka.
Ovom funkcijom praktično uvek započinjemo rad sa bazom podataka. Da bismo bilo šta uradili, moramo kreirati vezu sa MySQL-om. Parametri su opcioni, ali u najvećem broju slučajeva, koristićemo prva tri:
mysql_connect(server, user, pass)
- server - URL ili IP adresa servera baze podataka
- user - korisničko ime (definiše se u MySQL bazi)
- pass - šifra korisnika (definiše se u MySQL bazi)
Ako je MySQL server na istom računaru kao i web server koji izvršava naš PHP program (što je najčešća situacija), za server ćemo zadati "localhost" ili "127.0.0.1". Takođe, ako je potrebno, možemo zadati i port za komunikaciju (mada se ovo retko zahteva), npr. "localhost:3306".
Povratana vrednost je resurs koji predstavlja link ka bazi, ako je povezivanje uspelo ili false ako nije. Ovaj link će vam retko trebati, osim za:
- proveru da li je povezivanje uspelo
- zatvaranje konekcije u starim verzijama PHP-a (danas malo verovatno)
- specijalan slučaj kada morate da se povežete sa više MySQL servera ili da napravite više veza ka jednom
mysql_close()
Ova funkcija služi za prekid veze sa MySQL-om. Posle izvršenja ove funkcije, više ne možemo pristupati bazi podataka, tako da je obično koristimo na kraju našeg PHP programa.
Kao parametar funkcije, može se zadati link ka MySQL serveru, ali nije obavezan (osim u verzijama PHP-a koje se praktično više ne koriste). Ako se parametar ne zada, biće zatvorena poslednja kreirana konekcija. U najvećem broju slučajeva, zadaćemo ovu funkciju prosto kao:
mysql_close()
mysql_select_db()
Pomoću ove funkcije biramo bazu podataka sa kojom ćemo raditi. Od tada pa nadalje (tj. dok ne promenimo bazu), svaki zahtev koji upućujemo MySQL-u, biće usmeren ka izabranoj bazi. Obavezan parametar je naziv baze podataka, a pcioni je link ka MySQL serveru. Ako se link ne navede, podrazumevaće se poslednja otovrena konekcija.
U malim i srednjim web aplikacijama, kao i na jeftinijim hosting ponudama, ionako imamo samo jednu bazu podataka. Zbog toga, u praksi koristimo ovu funkciju na samom početku, odmah posle otvaranja konekcije.
mysql_select_db(baza)
Rezultat funkcije je logička vrednst koja ima vrednost true ako je izbor uspeo, odnosno false ako nije.
Inače svi ovi parametri nisu ništa misteriozno. U najvećem broju slučajeva ćete ih sve dobiti od provajdera kod koga ste otvorili web hosting (pod uslovom da paket koji ste zakupili uključuje i bazu podataka).
Ako je vaš hosting paket malo napredniji ili imate svoj server, možete koristiti aplikacije za administraciju baze podataka kao što je npr. web aplikacija phpMyAdmin. Tu onda definišete korisnike i njihove šifre, a takođe kreirate baze podataka.
Primer
Prvi primer je jedno najosnovnije i "najprljavije" povezivanje.
mysql_connect("localhost", "korisnik", "sifra");
mysql_select_db("biblioteka");
// ... rad sa bazom podataka
mysql_close();
Ovde uopšte nismo proveravali da li je došlo do neke greške. Samo smo pretpostavili da će sve biti u redu i "nagrnuli" na bazu podataka.
Da pogledamo sada malo elegantniji način:
$db_host = "localhost";
$db_user = "korisnik";
$db_pass = "sifra";
$db_name = "biblioteka";
$veza = mysql_connect($db_host, $db_user, $db_pass);
if ($veza) {
$izbor = mysql_select_db($db_name);
if ($izbor) {
// ... rad sa bazom podataka
}
else {
echo "Izbor baze {$db_name} nije uspeo.";
}
mysql_close();
}
else {
echo "MySQL povezivanje sa serverom {$db_host} nije uspelo.";
}
U web alikaciji možemo imati veliki broj nezavisnih PHP stranica. Možda bi bilo malo nepraktično da u svakoj ponavljamo sve ove linije. Zamislite šta bi se desilo kada bismo morali da promenimo npr. šifru za pristup bazi - morali bismo to da radimo u svakoj PHP stranici.
Zbog toga je dobra praksa da se naprave funkcije za pristup bazi i da se izdvoje u zaseban PHP fajl koji onda koristimo putem direktive include.
Nazovimo taj izdvojeni fajl npr. baza.php:
function bazaOpen()
{
$db_host = "localhost";
$db_user = "korisnik";
$db_pass = "sifra";
$db_name = "biblioteka";
$veza = mysql_connect($db_host, $db_user, $db_pass);
if ($veza) {
$izbor = mysql_select_db($db_name);
if (!$izbor) {
die("Izbor baze {$db_name} nije uspeo.");
}
}
else {
die("MySQL povezivanje sa serverom {$db_host} nije uspelo.");
}
}
function bazaClose()
{
mysql_close();
}
U svakoj drugoj PHP stranici će biti dovoljno da uradimo sledeće:
include "baza.php";
bazaOpen();
// ... rad sa bazom podataka
bazaClose();
Ako nastanu neke izneme u parametrima pristupa bazi podataka, menjaćemo samo funkciju bazaOpen().
- PHP.net, Original MySQL API