Date post: | 22-Jun-2015 |
Category: |
Technology |
Upload: | sabin-buraga |
View: | 8,895 times |
Download: | 1 times |
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/
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
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
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– …
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
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
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
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)
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
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)
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)
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
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.
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.
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/
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
16
Teh
nolo
gii
Web
Teh
nolo
gii
Web
20
07
20
07
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
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
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
19
Teh
nolo
gii
Web
Teh
nolo
gii
Web
20
07
20
07
php | bdphp | bd
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
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
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
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
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
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
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
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
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
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
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
30
Teh
nolo
gii
Web
Teh
nolo
gii
Web
20
07
20
07
Intrebari…?