+ All Categories
Home > Technology > Programare Web - Accesul la baze de date prin PHP

Programare Web - Accesul la baze de date prin PHP

Date post: 22-Jun-2015
Category:
Upload: sabin-buraga
View: 8,895 times
Download: 1 times
Share this document with a friend
Description:
Access to databases (MySQL and SQLite) via PHP. Several examples.
30
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/ 1 Tehnologii Web Tehnologii Web 2007 2007 Programare Web Programare Web Accesul la bazele de date Accesul la bazele de date prin PHP prin PHP Dr. Sabin-Corneliu Buraga Facultatea de Informatica Universitatea “A.I.Cuza” – Iasi, Romania http://www.infoiasi.ro/~busaco/
Transcript
Page 1: Programare Web - Accesul la baze de date prin PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

1

Teh

nolo

gii

Web

Teh

nolo

gii

Web

20

07

20

07

Programare WebProgramare WebAccesul la bazele de date Accesul la bazele de date

prin PHPprin PHP

Dr. Sabin-Corneliu BuragaFacultatea de Informatica

Universitatea “A.I.Cuza” – Iasi, Romania

http://www.infoiasi.ro/~busaco/

Page 2: Programare Web - Accesul la baze de date prin PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

2

Teh

nolo

gii

Web

Teh

nolo

gii

Web

20

07

20

07

• PHP (PHP: Hypertext Preprocessor)– Accesarea bazelor de date prin PHP

•Preliminarii•Suportul oferit de PHP•Conectivitatea cu MySQL•Conectivitatea cu SQLite

cuprinscuprins

Page 3: Programare Web - Accesul la baze de date prin PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

3

Teh

nolo

gii

Web

Teh

nolo

gii

Web

20

07

20

07

baze de datebaze de date

• Organizarea si regasirea facila a informatiilor, conduc la stocarea acestora in baze de date (relationale)– Fiecare baza de date contine mai multe tabele– O tabela este structurata în coloane (cimpuri) si

rânduri (înregistrari)– Fiecare cimp se desemnat de un nume si un tip de

date (numeric, sir de caractere, data,...)– Pentru facilitarea cautarii/sortarii pot fi asociati si

indecsi, conform valorilor unui/unor cimp(uri)– Intre tabelele unei baze de date se pot defini

diverse relatii

Page 4: Programare Web - Accesul la baze de date prin PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

4

Teh

nolo

gii

Web

Teh

nolo

gii

Web

20

07

20

07

baze de datebaze de date• Ansamblul de aplicatii care realizeaza

managementul bazelor de date se numeste sistem de baze de date relational (Relational DataBase Management System –RDBMS)– DB2– Informix– Microsoft SQL Server– MySQL– Oracle– PostgreSQL– …

Page 5: Programare Web - Accesul la baze de date prin PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

5

Teh

nolo

gii

Web

Teh

nolo

gii

Web

20

07

20

07

baze de datebaze de date

• Operatiile asupra bazelor de date, tabelelor, valorilor inregistrarilor etc. se specifica intr-un limbaj declarativ: SQL (Structured Query Language)

• Accesul la un server de gestiune a bazelor de date se realizeaza via un client

Page 6: Programare Web - Accesul la baze de date prin PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

6

Teh

nolo

gii

Web

Teh

nolo

gii

Web

20

07

20

07

MySQLMySQL

• Arhitectura open source• Foarte rapid, optimizat pentru acces la date• www.mysql.com• Larg folosit in cadrul solutiilor de comert

electronic (e.g., aplicatii Web de tip e-shop)• API-uri disponibile in majoritatea limbajelor

de programare (C, C++, Perl, PHP, Python,…)• Componente: server (mysqld) + client (mysql,

PHPMyAdmin, script CGI, program PHP,…)• Manualul: http://dev.mysql.com/doc/mysql/en

Page 7: Programare Web - Accesul la baze de date prin PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

7

Teh

nolo

gii

Web

Teh

nolo

gii

Web

20

07

20

07

MySQLMySQL

• Alte facilitati:– Crearea “din zbor” de variabile

ce pot fi ulterior refolosite in interogari

– Replicarea datelor– Paleta larga de functii, operatori si

structuri de control– Suport pentru triggers si clusters – Multe altele

Page 8: Programare Web - Accesul la baze de date prin PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

8

Teh

nolo

gii

Web

Teh

nolo

gii

Web

20

07

20

07

MySQLMySQL

• Accesul la server via un client in linie de comanda: mysql [ optiuni ] [ nume_baza_de_date ]

• Optiuni uzuale:-h masina (numele masinii/serverului)-p [ parola ] (parola pentru autentificare)-u utilizator (numele utilizatorului)

• Exemplu: mysql –u tux –p

• Alte detalii: info mysql (in UNIX/Linux)

Page 9: Programare Web - Accesul la baze de date prin PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

9

Teh

nolo

gii

Web

Teh

nolo

gii

Web

20

07

20

07

MySQL | exemplu MySQL | exemplu

(infoiasi)$ mysql –u tux –pEnter password:Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 2 to server version: 4.0.11a-gammaType 'help;' or '\h' for help. Type '\c' to clear the buffer.mysql> use clienti;Reading table information for completion of table and column names

Database changed

Page 10: Programare Web - Accesul la baze de date prin PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

10

Teh

nolo

gii

Web

Teh

nolo

gii

Web

20

07

20

07

MySQL | exemplu MySQL | exemplu

mysql> select nume, prenume from comenzi;+---------+---------+| nume | prenume |+---------+---------+| Savon | Buritin || Vigoniu | Bonzui || Nilla | Sapo || Lzian | Xi || Tin | Debre |+---------+---------+5 rows in set (0.01 sec)

Page 11: Programare Web - Accesul la baze de date prin PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

11

Teh

nolo

gii

Web

Teh

nolo

gii

Web

20

07

20

07

MySQL | exemplu MySQL | exemplu

mysql> select nume from comenzi where id > 3;

+-------+| nume |+-------+| Lzian || Tin |+-------+2 rows in set (0.11 sec)

Page 12: Programare Web - Accesul la baze de date prin PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

12

Teh

nolo

gii

Web

Teh

nolo

gii

Web

20

07

20

07

MySQLMySQL

• Alte operatii uzuale:– insert– update– delete– create database– create table– drop table– grant

Page 13: Programare Web - Accesul la baze de date prin PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

13

Teh

nolo

gii

Web

Teh

nolo

gii

Web

20

07

20

07

MySQL | exemplu MySQL | exemplu

mysql> create database studenti;Query OK, 1 row affected (0.00 sec)mysql> use studentiDatabase changedmysql> create table note ( -> nume char (40), -> adresa char(40), -> grupa integer, -> nota integer not null);Query OK, 0 rows affected (0.01 sec)mysql> insert into note values -> ("Radu Filip", "[email protected]", 2, 10);

Query OK, 1 row affected (0.00 sec)

Am creat o baza de date, iar in cadrul ei o tabela.

Page 14: Programare Web - Accesul la baze de date prin PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

14

Teh

nolo

gii

Web

Teh

nolo

gii

Web

20

07

20

07

MySQL | exemplu MySQL | exemplu

mysql> grant usage on studenti.* to busaco@localhost;

Query OK, 0 rows affected (0.00 sec)mysql> grant select, insert, delete on studenti.* to busaco@localhost;

Query OK, 0 rows affected (0.00 sec)

Am acordat permisiuni de utilizare a bazei de date.

Page 15: Programare Web - Accesul la baze de date prin PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

15

Teh

nolo

gii

Web

Teh

nolo

gii

Web

20

07

20

07

MySQLMySQL

• Accesul la server via un client Web folosind aplicatia PHPMyAdmin– Instrument Web de management al

serverului MySQL: crearea si invocare de interogari SQL, export/import in/din diverse formate, interfata atractiva in multe limbi etc.

– http://www.phpmyadmin.net/

Page 16: Programare Web - Accesul la baze de date prin PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

16

Teh

nolo

gii

Web

Teh

nolo

gii

Web

20

07

20

07

Page 17: Programare Web - Accesul la baze de date prin PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

17

Teh

nolo

gii

Web

Teh

nolo

gii

Web

20

07

20

07

• PHP ofera suport pentru o multitudine de servere/tehnologii de baze de date: – MySQL – functiile mysql_*(), mysqli_*()– PostgreSQL – functiile pg_*()– SQLite – functiile sqlite_*()– Oracle – functiile ora_*()– ODBC (Open DataBase Connectivity) – etc.

php | bdphp | bd

Page 18: Programare Web - Accesul la baze de date prin PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

18

Teh

nolo

gii

Web

Teh

nolo

gii

Web

20

07

20

07

• Functii predefinite pentru accesul la MySQL:– Conectare la serverul MySQL: mysql_connect()– Selectare (utilizare) baza de date:

mysql_select_db()– Executia unei interogari: mysql_query()– Raportare de erori: mysql_errno(), mysql_error()– Preluarea rezultatelor intr-un tablou:

mysql_fetch_array()– Multe altele…

php | bdphp | bd

Page 19: Programare Web - Accesul la baze de date prin PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

19

Teh

nolo

gii

Web

Teh

nolo

gii

Web

20

07

20

07

php | bdphp | bd

Page 20: Programare Web - Accesul la baze de date prin PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

20

Teh

nolo

gii

Web

Teh

nolo

gii

Web

20

07

20

07

• Pentru inceput, vom crea un cont MySQL care sa asigure acces autentificat din programele PHP asupra bazei de date students

(infoiasi)$ mysql –u root mysql

mysql> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON students.* TO 'tux'@'localhost' IDENTIFIED BY 'p@rola' WITH GRANT OPTION;

Query OK, 0 rows affected (0.11 sec)

php | bd | exempluphp | bd | exemplu

Page 21: Programare Web - Accesul la baze de date prin PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

21

Teh

nolo

gii

Web

Teh

nolo

gii

Web

20

07

20

07

• Folosind mysql in linia de comanda sau PHPMyAdmin, cream tabela students cu structura:

CREATE TABLE IF NOT EXISTS `students` ( `name` varchar(50) NOT NULL default '', `year` enum('1','2','3') NOT NULL default '1', `id` int(11) NOT NULL auto_increment, `age` smallint(2) unsigned zerofill NOT NULL default '00', PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1AUTO_INCREMENT=1;

php | bd | exempluphp | bd | exemplu

Page 22: Programare Web - Accesul la baze de date prin PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

22

Teh

nolo

gii

Web

Teh

nolo

gii

Web

20

07

20

07

phpphpC

rea

m ta

be

laC

rea

m ta

be

la

Page 23: Programare Web - Accesul la baze de date prin PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

23

Teh

nolo

gii

Web

Teh

nolo

gii

Web

20

07

20

07

phpphpG

en

eram

str

uctu

raG

en

eram

str

uctu

ra

Page 24: Programare Web - Accesul la baze de date prin PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

24

Teh

nolo

gii

Web

Teh

nolo

gii

Web

20

07

20

07

phpphpC

on

firm

are

a c

rear

iiC

on

firm

are

a c

rear

ii

Page 25: Programare Web - Accesul la baze de date prin PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

25

Teh

nolo

gii

Web

Teh

nolo

gii

Web

20

07

20

07

phpphpE

ven

tua

l, in

sera

m o

inre

gis

tra

reE

ven

tua

l, in

sera

m o

inre

gis

tra

re

Page 26: Programare Web - Accesul la baze de date prin PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

26

Teh

nolo

gii

Web

Teh

nolo

gii

Web

20

07

20

07

// conectarea la serverul MySQL $conexiune = mysql_connect ('localhost', 'tux', 'p@rola'); // deschidem baza de datemysql_select_db ('students', $conexiune) // formulam o interogare & o executam $sql = "select name, year from students where year = 2"; $interog = mysql_query ($sql, $conexiune); // salvam într-un tablou înregistrarile gasite $inreg = mysql_fetch_array ($interog); while ($inreg) { echo ('<p>Studentul ' . $inreg['name'] . ' este in anul ' . $inreg['year'] . '</p>'); $inreg = mysql_fetch_array ($interog); } mysql_close ($conexiune);

php | bd | exempluphp | bd | exemplu

Afisam numele studentilor din anul 2

Page 27: Programare Web - Accesul la baze de date prin PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

27

Teh

nolo

gii

Web

Teh

nolo

gii

Web

20

07

20

07

• SQLite– Extensie PHP pentru acces la biblioteca

SQLite– Baza de date este stocata ca fisier obisnuit,

fara a fi necesara conectarea la un server de baze de date extern

– Se ofera suport pentru interogari SQL– Detalii la http://sqlite.org/– Exista posibilitatea administrarii via

PHPSQLiteAdmin: http://phpsqliteadmin.sourceforge.net

php | bdphp | bd

Page 28: Programare Web - Accesul la baze de date prin PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

28

Teh

nolo

gii

Web

Teh

nolo

gii

Web

20

07

20

07

// deschidem o baza de date SQLite (daca nu exista, va fi creata)if (($bd = sqlite_open ('studenti', 0666, $er)) === FALSE) { die ($er); }// cream o tabela & inseram o inregistraresqlite_exec ('CREATE TABLE studs (name varchar(50), age smallint(2))',

$bd);sqlite_exec ("INSERT INTO studs VALUES ('…'," . rand(10, 90) . ')', $bd);// selectam studentii cu virste intre 20 si 50$rez = sqlite_query ('SELECT * FROM studs WHERE age < 50 and

age > 20 ORDER BY age desc', $bd);// afisam…while ($r = sqlite_fetch_array ($rez)) { echo '<p>' . $r['name'] . ' are ' . $r['age'] . ' de ani.</p>'; }

php | bd | exempluphp | bd | exemplu

Page 29: Programare Web - Accesul la baze de date prin PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

29

Teh

nolo

gii

Web

Teh

nolo

gii

Web

20

07

20

07

• PHP (PHP: Hypertext Preprocessor)– Accesarea bazelor de date prin PHP

•Preliminarii•Suportul oferit de PHP•Conectivitatea cu MySQL•Conectivitatea cu SQLite

rezumatrezumat

Page 30: Programare Web - Accesul la baze de date prin PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

30

Teh

nolo

gii

Web

Teh

nolo

gii

Web

20

07

20

07

Intrebari…?


Recommended