You are on page 1of 30

Tehnologii Web 2007

Programare Web
Accesul la bazele de date prin PHP
Dr. Sabin-Corneliu Buraga
Facultatea de Informatica Universitatea A.I.Cuza Iasi, Romania

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

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

Tehnologii Web 2007

cuprins
PHP (PHP: Hypertext Preprocessor)
Accesarea bazelor de date prin PHP
Preliminarii Suportul oferit de PHP Conectivitatea cu MySQL Conectivitatea cu SQLite

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

Tehnologii Web 2007

baze 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 rnduri (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
3

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

Tehnologii Web 2007

baze 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

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

Tehnologii Web 2007

baze 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

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

Tehnologii Web 2007

MySQL
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
6

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

Tehnologii Web 2007

MySQL
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
7

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

Tehnologii Web 2007

MySQL
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)

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

Tehnologii Web 2007

MySQL | exemplu
(infoiasi)$ mysql u tux p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2 to server version: 4.0.11a-gamma Type '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

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

Tehnologii Web 2007

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)

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

10

Tehnologii Web 2007

MySQL | exemplu
mysql> select nume from comenzi where id > 3; +-------+ | nume | +-------+ | Lzian | | Tin | +-------+ 2 rows in set (0.11 sec)

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

11

Tehnologii Web 2007

MySQL
Alte operatii uzuale: insert update delete create database create table drop table grant
12

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

Tehnologii Web 2007

MySQL | exemplu
mysql> create database studenti; Query OK, 1 row affected (0.00 sec) mysql> use studenti Database changed mysql> 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", "socrate@infoiasi.ro", 2, 10); Query OK, 1 row affected (0.00 sec)

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


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

Tehnologii Web 2007

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.

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

14

Tehnologii Web 2007

MySQL
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/

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

15

Tehnologii Web 2007

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

16

Tehnologii Web 2007

php | bd
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.
17

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

Tehnologii Web 2007

php | bd
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
18

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

Tehnologii Web 2007

php | bd

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

19

Tehnologii Web 2007

php | bd | exemplu
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)

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

20

Tehnologii Web 2007

php | bd | exemplu
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=latin1 AUTO_INCREMENT=1;
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/ 21

Tehnologii Web 2007

php

Cream tabela

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

22

Tehnologii Web 2007

php

Generam structura

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

23

Tehnologii Web 2007

php

Confirmarea crearii

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

24

Tehnologii Web 2007

php

Eventual, inseram o inregistrare

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

25

Tehnologii Web 2007

php | bd | exemplu
// conectarea la serverul MySQL $conexiune = mysql_connect ('localhost', 'tux', 'p@rola'); // deschidem baza de date mysql_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);

Afisam numele studentilor din anul 2


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

Tehnologii Web 2007

php | bd
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
27

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

Tehnologii Web 2007

php | bd | exemplu
// 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 inregistrare sqlite_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>'; }
28

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

Tehnologii Web 2007

rezumat
PHP (PHP: Hypertext Preprocessor)
Accesarea bazelor de date prin PHP
Preliminarii Suportul oferit de PHP Conectivitatea cu MySQL Conectivitatea cu SQLite

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

29

Tehnologii Web 2007

Intrebari?

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

30

You might also like