Sunteți pe pagina 1din 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/ 1


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


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
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
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/ 3
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/ 4
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/ 5


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

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


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

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


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/ 8
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/ 9


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

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


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.

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


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…

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


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

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


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>';
}
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/ 28
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

S-ar putea să vă placă și