CATEGORII DOCUMENTE |
PHP dispune de functii care pot asigura exploatarea unui mare numar de servere de baze de date. In cele ce urmeaza vor fi prezentate doar functiile care servesc la exploatarea unui server MySQL.
mysql_connect() si mysql_select_db() - realizeaza o conexiune cu serverul MySQL. Prototipurile functiilor sunt:
int mysql_connect (string host, string user, string password).
int mysql_select_db(string database [, int conect]))
De regula apelul functiei mysql_connect() este urmat de apelul functiei mysql_select_db(). Daca se recupereaza valoarea intreaga returnata de mysql_connect(), ea poate fi folosita ca al doilea parametru in mysql_select_db(), permitand astfel ca intr-un script sa se realizeze conexiuni la mai multe servere de baze de date. Pentru conectarea la mai multe baze de date, valorile intregi si distincte returnate de functiile mysql_select_db() apelate vor fi folosite ca si parametri in functii ca mysql_query() , mysql_insert_id(), mysql_affected_rows() etc., apelate ulterior.
Exemple:
mysql_connect('localhost', 'mdamian', 'aq^123') or die ('Nu ma pot conecta la serverul MySQL');
mysql_select_db('studenti') or die ('Nu ma pot conecta la b.d. Studenti');
Daca serverul de baze de date MySQL ruleaza pe un alt calculator din retea, avand adresa wanadoo.cluj.ro, conectarea la aceeasi baza de date ar putea fi realizata scriind:
mysql_connect ('wanadoo.cluj.ro', 'mdamian', 'aq^123') or die ('Nu ma pot conecta la serverul MySQL');
mysql_select_db ('studenti') or die ('Nu ma pot conecta la b.d. Studenti');
mysql_query()- este functia cea mai frecvent utilizata cand este exploatata o baza de date. Prototipul functiei este :
int mysql_query (string query [, int link]).
Aceasta functie trimite o comanda serverului MySQL (orice comanda!). Functia nu returneaza rezultatul comenzii SQL ci o valoare care va fi folosita in continuare ca parametru in apelurile functiilor care realizeaza extragerea rezultatului comenzii. Daca s-a introdus o comanda select, rezultatul este o multime de selectie, randurile acesteia putand fi preluate folosind una dintre functiile mysqli_fetch_row(), mysqli_fetch_array() sau mysql_result().
De regula apelul functiei mysql_query() este urmat de constructia or die(mysql_error() ), pentru a primi in caz de esec un mesaj privind cauza acestuia.
mysqli_fetch_array()- permite preluarea unui rand dintr-o multime de selectie realizata ca urmare a unei interogari. Valorile sunt memorate intr-un sir asociativ in care numele cheilor coincid cu numele campurilor. Prototipul functiei este :
array mysqli_fetch_array (int rezultat [, int tip_rezultat]).
Daca nu se indica al doilea parametru, PHP va prelua fiecare camp de doua ori, o data cu o cheie care poarta numele campului si a doua oara cu o cheie numerica. De regula nu se doreste acest lucru si atunci al doilea parametru va fi MYSQL_ASSOC pentru chei avand ca nume numele campurilor respectiv MYSQL_NUM pentru chei numerice.
Exemplu:
$q = 'select * from stud';
$rezultat = mysql_query($q) or die(mysql_error());
echo '<TABLE BORDER=3>';
while ($row = mysqli_fetch_array($rezultat, MYSQL_ASSOC))
echo '</TR>';
echo '</TABLE>';
mysqli_fetch_row()- este o functie care opereaza ca si mysqli_fetch_array() daca la apel al doilea parametru este MYSQL_NUM. Prototipul functiei este :
array mysql_row (int rezultat).
mysql_insert_id()- este o functie care se poate apela dupa o comanda insert, daca tabelul in care s-a adaugat un rand are o cheie primara de tip auto_increment. Functia va returna valoarea cheii primare corespunzand randului inserat. Prototipul functiei este:
int mysql_insert_id ([int link]).
Exemplu:
mysql_query('insert into utilizatori (nume, prenume) values ('Vasilescu', 'Carmen')') or die (mysql_error());
$n = mysql_insert_id();
mysqli_num_rows()- returneaza numarul de linii dintr-o multime de selectie creat ca urmare a executarii unei comenzi SQL select. Prototipul functiei este:
int mysqli_num_rows (int rezultat).
Exemplu:
$query = 'select * from utilizatori';
$rez = mysql_query($query) or die (mysql_error());
if (mysqli_num_rows($rez) == 0)
else
mysql_affected_rows()- returneaza numarul de linii afectate de o comanda update, insert sau delete. Prototipul functiei este:
int mysql_affected_rows ([int link]).
Exemplu:
$query = 'delete from utilizatori where id_num == $v';
$rez = mysql_query($query) or die (mysql_error());
$deleted = mysql_affected_rows();
if ($deleted == 0)
else
mysql_errno() si mysql_error() - permit identificarea erorii care s-a produs in timpul exectarii unei comenzi SQL. Prima functie returneaza codul numeric al erorii iar a doua un mesaj in care eroarea este descrisa explicit. Prototipurile functiilor sunt:
int mysql_errno ( [int link] )
string mysql_error ( [int link] ).
mysql_result() - realizeaza recuperarea valorii unui camp dintr-un rand al unui cursor rezultat ca urmare a unei comenzi SQL select. Prototipul ei este:
tip_variabil mysql_result(int rezultat, int linie [, tip_variabil camp])
Daca este indicat campul, el poate fi specificat fie printr-o valoare numerica fie prin numele sau.
Fiind o functie cu executie lenta, apelarea ei nu se justifica decat in cazul in care rezultatul comenzii select este un singur rand sau chiar o singura valoare, ca in exemplul urmator:
$rez = mysql_query('select count(*) from stud') or die (mysql_error());
echo 'In tabelul stud sunt ' . mysql_result($rez, 0, 0) . ' inregistrari.';
In alte situatii se vor utiliza functiile mysqli_fetch_array() sau mysqli_fetch_row().
Instructiunile SQL care realizeaza activitati de administrare a unei baze de date (creare baza de date, creare tabele, modificare structura, suprimare tabele sau suprimare baza de date) nu vor fi prezente in scripturi. Comenzile de acest tip se realizeaza mult mai eficient cu instrumente ca phpMyAdmin.
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 1013
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved