Creeaza.com - informatii profesionale despre


Simplitatea lucrurilor complicate - Referate profesionale unice
Acasa » referate » informatica » php
Accesul la bazele de date relationale

Accesul la bazele de date relationale


Accesul la bazele de date relationale

Marea majoritate a aplicatiilor web, indiferent daca e vorba de o simpla agenda sau de un magzin virtual, utilizeaza baze de date relationale pentru a memora datele prelucrate de aplicatia respectiva. E adevarat ca am putea utilza fisiere text pentru a stoca datele, dar acest procedeu are cateva deficiente majore:

securitate scazuta a datelor memorate: fisierele text construite de un script PHP nu pot fi protejate la accesul neautorizat;

datorita accesului secvential, operatiile de actualizare a datelor vor fi mari consumatoare de timp, iar scripturile care prelucreaza datele vor fi complexe si greu de modificat.



Utilizarea unui sistem de gestiune a bazelor de date relationale (SGBDR) este un procedeu cu mari beneficii:

siguranta oferita de sistemul de drepturi de acces implementat de SGBD si a posibilitatii criptarii datelor;

acces rapid la date prin utilizarea de interogari SQL oricat de complexe;

modelul relational este in acelasi timp simplu de utilizat, puternic si bine documentat in literatura de specialitate, permitand definirea unor baze de date complexe;

limbajul PHP contine functii de interconectare cu majoritatea sistemelor de gestiune a bazelor de date actuale, atat proprietare (MicrosoftSQL), cat si SGBD-uri open-source (MySQL);

Lucrarea de fata prezinta interconectarea dintre PHP si SGBD-ul MySQL, dar majoritatea consideratiilor raman valabile indiferent de SGBD-ul ales. Lucrul cu date stocate intr-o baza de date relationala MySQL se deruleaza dupa urmatorul model:

  • Se deschide o conexiune cu serverul de baze de date MySQL (functia mysql_connect);
  • Selectam baza de date dorita (functia mysql_select_db);
  • Se emit interogari SQL asupra bazei de date curente, rezultatele fiind accesibile prin intermediul unor functii PHP specializate ($mysqli->query, mysql_num_rows, mysql_fetch_array);
  • Se intrerupe conexiunea cu serverul MySQL (functia mysql_close);

In cele ce urmeaza consideram cititorul familiarizat cu principalele comenzi ale limbajului SQL, implementate de altfel in toate sistemele de gestiune a bazelor de date: Select, Insert, Delete, Update. Serverul MySQL implementeaza mult mai multe comenzi SQL, dar nu am considerat necesar sa amintesc decat comenzile absolut necesare. Majoritatea firmelor care furnizeaza servicii de gazduire web permit accesul la baza de date MySQL doar prin intermediul utilitarului PHPmyAdmin, care se constituie intr-o interfata grafica excelenta intre utilizator si serverul MySQL. Din aceasta cauza, comenzile SQL pentru crearea si gestionarea bazelor de date nu isi au locul in lucrarea de fata, cititorul avand putine ocazii concrete de a le folosi.

1. Stabilirea si inchiderea conexiunii cu serverul MySQL

Stabilirea unei conexiuni cu serverul de baze de date MySQL se realizeaza prin intermediul functiei mysql_connect, care are urmatoarea sintaxa:

int mysql_connect(nume_gazda, nume_utilizator, parola);

unde

nume_gazda reprezinta numele serverului unde este gazduita aplicatia;

nume_utilizator este numele contului de acces;

parola este parola de acces la baza de date, stabilita pentru autentificarea utilizatorului;

Functia returneaza false in caz de insucces, respectiv un numar intreg denumit identificator al conexiunii, in caz contrar.

Inchiderea conexiunii se realizeaza prin apelul functiei mysql_close, avand ca parametru identificatorul conexiunii stabilit la initierea acesteia.

Iata un exemplu de conectare la serverul MySQL, incluzand verificarile asupra succesului initierii conexiunii:


2. Realizarea interogarilor

Pentru a exemplifica modul de realizare al interogarilor SQL asupra unei baze de date MySQL, vom considera baza de date DB_elev, utilizata pentru gestionarea situatiei scolare a elevilor unei scoli (model simplificat), care contine tabelele:


Realizarea unei interogari SQL se realizeaza prin intermediul functiei $mysqli->query, care are urmatoarea sintaxa:

int $mysqli->query(sir_interogare);

Functia returneaza un identificator al interogarii daca interogarea s-a efectuat cu succes si false in caz contrar.

Ne propunem sa afisam lista tuturor elevilor care au obtinut o nota mai mica decat 5 la disciplina matematica. Exemplul urmator implementeaza aceasta cerinta dar sugereaza si un mod general de lucru:

query("SELECT nume, clasa FROM elev, materii, note WHERE (elev.idelev=note.idelev) and (note.idmaterie=materii.idmaterie) and (materii.denumire='matematica') and (note.nota<5) ORDER BY elevi.nume") or die("Eroare ! Interogare nereusita !"); //preiau datele returnate de SELECT if (mysql_num_rows($interogare)==0) echo "Nu exista inregistrari care satisfac criteriul !"; else } //inchid conexiunea cu serverul MySQL mysql_close($id_conexiune); ?> " v:shapes="_x0000_s1027">


Observatii:

Functia mysql_num_rows determina numarul de inregistrari din tabela virtuala(set de inregistrari) creata de instructiunea SELECT-SQL, ca raspuns al interogarii. Parametrul de apel al functiei este identificatorul interogarii.

  • Functia $mysqli->query trimite interogarea catre serverul MySQL si, in caz de succes, rezultatul este disponibil scriptului apelant. Datele primite ca rezultat al interogarii sunt accesibile prin intermediul unor functii PHP   dedicate.
  • Functia mysql_fetch_array este utilizata pentru a prelua cate o inregistrare din tabela virtuala creata de instructiunea SELECT-SQL, care va fi memorata intr-un tablou asociativ.

Parametrul de apel al functiei este identificatorul interogarii, iar rezultatul este tabloul asociativ care va contine urmatoarea inregistrare din tabela virtuala sau false daca setul de rezultate s-a epuizat. Preluarea tuturor inregistrarilor se face prin apeluri repetate ale functiei mysql_fetch_array.


Lansarea de interogari bazate pe comenzile SQL DELETE, INSERT si UPDATE nu produce un set de inregistrari ca rezultat, de aceea este foarte util sa stim care a fost efectul executiei interogarii respective. Pentru aceasta putem apela functia mysql_affected_rows, care nu are parametri si care returneaza numarul inregistrarilor afectate de ultima interogare. Rezultatul apelului este -1 daca interogarea cea mai recenta a esuat.

3 Tratarea erorilor

Tratarea erorilor se poate realiza prin apelul a doua functii PHP fara parametri:

mysql_errno() - returneaza codul de eroare asociat celei mai recente operatii MySQL; daca mai multe operatii MySQL consecutive au generat eroare, codurile de eroare se pierd, doar ultimul fiind accesibil; Functia returneaza valoarea zero daca operatiile s-au efectuat cu succes;

mysql_error() - returneaza un sir de caractere reprezentand descrierea textuala a erorii aparute la ultima operatie MySQL sau sirul vid, in cazul in care toate operatiile s-au efectuat cu succes.

Exemplul urmator arata cum se poate proceda in cazul aparitiei unei erori la selectarea bazei de date curente:


Concluzii

Limbajul PHP ramane una dintre cele mai interesante tehnologii web existente, deoarece imbina caracteristici dintre cele mai complexe cu simplitatea in utilizare. Sintaxa apropiata de limbajul C face limbajul PHP direct accesibil unei largi categorii de programatori. Aceste caracteristici, precum si conectivitatea cu numeroase instrumente open-source fac din limbajul PHP alegerea naturala pentru dezvoltarea de aplicatii web in domeniul educational.

Biblioteca de functii PHP furnizeaza acces la numeroase instrumente de prelucrare a datelor, de la simple fisiere text pana la conectivitate cu baze de date, prin diverse protocoale.

Fisierele text nu pot constitui o solutie viabila in realizarea unei aplicatii web datorita lipsei securitatii si confidentialitatii datelor, precum si a mecanismului greoi de lucru.

Capitolul de fata a prezentat pe larg modalitatile de lucru cu fisierele text si cu bazele de date MySQL, dar limbajul PHP contine si alte instrumente de gestiune a datelor, cum ar fi:

l       Conectivitate cu sistemul de gestiune a bazelor de date Postgresql, de asemenea provenit din comunitatea open-source. Postgresql este complex, scalabil si are cateva facilitati in plus fata de versiunile standard, necomerciale, ale MySQL: subselectii, tranzactii, declansatoare, vederi;

l       Conectivitate ODBC. Standardul ODBC (Open Database Conectivity) a fost dezvoltat de firma Microsoft si adoptat pe scara larga atat in mediile Windows cat si in mediile Linux/Unix. Facilitatea este utila celor care doresc sa acceseze baze de date Microsoft dintr-un sistem Linux/Unix.

l       XML (eXtensible Markup Language) este un limbaj pentru descrierea datelor care devine tot mai popular si ar putea inlocui la un moment dat limbajul HTML ca limbaj dominant pentru schimbul de informatii prin Internet. PHP accepta biblioteca xpat, care permite construirea de analizoare pentru conversia documentelor XML.





Politica de confidentialitate


creeaza logo.com Copyright © 2024 - Toate drepturile rezervate.
Toate documentele au caracter informativ cu scop educational.