Sunteți pe pagina 1din 8

Conectarea la serverul de date MySQL

PHP are trei moduri diferite prin care se poate conecta si interactiona cu baza
de date MySQL : extensia MySQL originala (cu functii), MySQL Improved
(MySQLi, obiect-orientat), sau PHP Data Objects (PDO, obiect-orientat).
Ele nu pot fi amestecate in acelasi script. Extensia originala MySQL nu mai este activ
dezvoltata si nu este recomandat pentru proiecte PHP-MySQL noi.

1) Extensia MySQL originala (cu functii)


Conectarea la serverul de date MySQL se face prin intermediul funcției
mysql_connect(), care, într-o formă simplă, are următoarea sintaxă
mysql_connect('numegazda','nume_utilizator','parola');
unde:
- Nume gazdă este numele calculatorului pe care se află serverul MySQL
- Nume utilizator este numele utilizatorului
- Parola este parola de conectare la serverul MySQL
Funcția returneză un indice de conexiune în caz de success și valoarea False în
caz contrar.

2) MySQL Improved (MySQLi, obiect-orientat)


Inainte de a putea accesa informatii din baza de date , trebuie creata o
conexiune cu serverul MySQL.Pentru a va conecta la un server MySQL cu PHP si
MySQLi, se creaza o instanta de obiect mysqli, cu formula new mysqli(), la care se
adauga datele de conectare.

Sintaxa:
$conn = new mysqli($servername, $username,
$password, $database, $port);
- $servername - Specifica serverul la care sa se conecteze. Daca adaugati
valoarea NULL sau un sir gol "", serverul va folosi valoarea standard: "localhost".
- $username - Specifica numele de utilizator la baza de date MySQL.
-$password - Specifica parola utilizatorului pentru conectare.
-$database - Optional. Numele bazei de date care contine tabelele.
- $port - Optional. Specifica port-ul prin care se face conectarea la serverul
MySQL, standard este 3306

- Exemplu:
<?php
// conectare la server
$conn = new mysqli('localhost', 'root', 'pass',
'dbname');
// verifica conexiunea
if (mysqli_connect_errno()) {
exit('Connect failed: '. mysqli_connect_error());
}
?>
3)PDO -PHP Data Objects este o extensie PHP pentru accesare baze de date
in PHP. PDO foloseste caracteristicile OOP (Programare Orientata pe Obiecte)
valabile incepand cu PHP 5.1.Deoarece PDO lucreaza cu clase si obiecte, trebuie sa
fiti familiarizati cu modul de lucru al programarii orientate pe obiecte.
PDO poate lucra cu urmatoarele tipuri de baze de date:

 MySQL
 PostgreSQL
 SQLite 2 & 3
 Firebird
 Informix (IBM Informix Dynamic Server)
 ODBC
 Oracle
 DBLM: FreeTDS / Sybase / MS-SQL
 IBM (IBM DB2)

Unul din avantajele PDO este acela ca se folosesc functii similare pentru
interogarea si prelucrarea bazelor de date, indiferent de tipul lor (din cele mentionate
mai sus).
Script-urile care folosesc interfata PDO pentru conectare la baza de date
efectueaza in general urmatoarele operatii:
Conectare la serverul bazei de date, prin apelare new PDO(), obtinand un
obiect pentru lucru cu acea baza de date.
Aplicare functii specifice PDO pt. efectuarea interogarilor la baza de date.
Retinerea si prelucrarea datelor returnate.
Deconectarea de la server.

- Pentru a vedea daca PDO este valabil pentru baza dv. de date, se poate
verifica cu phpinfo(), unde e o sectiune PDO, sau cu metoda
PDO::getAvailableDrivers()

foreach(PDO::getAvailableDrivers() as $driver) {
echo $driver.'
';
}

Conectare la baza de date

Orice interactiune cu o baza de date incepe prin conectarea la ea. In functie de


tipul bazei de date se face intai conectarea, prin crearea unei instante de obiect cu new
PDO(). Dupa conectare se aplica metodele PDO pentru retinerea si prelucrarea
datelor, care in mare parte sunt aceleasi, indiferent de baza de date conectata. Iata cum
se face conectarea la cateva din acestea:

Conectare la MySQL

<?php
// Datele de conectare (adresa_server, baza_de_date, nume si parola)
$hostdb = 'localhost';
$namedb = 'numebd';
$userdb = 'username';
$passdb = 'password';

// Afiseaza mesaj daca s-a reusit conectarea, altfel, retine


eventuala eroare
try {
$dbh = new PDO("mysql:host=$hostdb; dbname=$namedb", $userdb,
$passdb);
echo 'Connected to database';
}
catch(PDOException $e) {
echo $e->getMessage();
}
?>
- In variabila $dbh se creaza obiectul PDO in care vor fi stocate datele transmise de la
serverul MySQL. La aceasta instanta de obiect vor fi aplicate metodele pentru
prelucrarea datelor.Observati ca s-a folosit formula try() ... catch(), aceasta pentru a
nu expune datele de conectare in cazul vreunei erori.
- De exemplu, folosind aceasta tehnica, daca numele bazei de date este incorect,
returneaza ceva de genul:
SQLSTATE[42000] [1049] Unknown database 'numebd'
- Daca numele sau parola sunt gresite, afiseaza ceva similar cu:
SQLSTATE[28000] [1045] Access denied for user 'numele'@'localhost' (using
password: YES)
Dar, daca s-ar folosi direct:
<?php
// Datele de conectare (adresa_server, baza_de_date, nume si parola)
$hostdb = 'localhost';
$namedb = 'numebd';
$userdb = 'username';
$passdb = 'password';

$dbh = new PDO("mysql:host=$hostdb; dbname=$namedb", $userdb,


$passdb);
?>
- Mesajul de eroare ar expune mai multe date, inclusiv parola, dupa cum se vede
mai jos:
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[28000]
[1045] Access denied for user 'numele'@'localhost' (using password: YES)' in
E:\server\www\zzz.php:14 Stack trace: #0 E:\server\www\zzz.php(14): PDO-
>__construct('mysql:host=loca...', 'numele', 'parola') #1 {main} thrown in
E:\server\www\zzz.php on line 7
• Deci, este indicata aplicarea formulei try() ... catch().

1) Extensia MySQL originala (cu functii)

O bază de date MySQL poate fi create lansând comanda CREATE


DATABASE , fie de pe linia de comandă, fie din interiorul unui script PHP.Crearea
unei baze de date MySQL dintr-un script PHP se realizează cu ajutorul funcției
mysql_query(), utilizând o constructive de forma
Mysql_query(‘CREATE DATABASE nume_baza_date’);
Exemplu pentru Extensia MySQL originala (cu functii),
<html>
<head>
<title>Script</title>
</head>
<body>
<?php
$con=mysql_connect('localhost','root','

');
if($con)
{
print'<p> S-a creat conexiunea!';
$crea=mysql_query('create database cataloage');
if($crea)
{
print'<p> S-a creat baza de date cataloage!';

}
else
{
die('<p> Nu s-a putut crea baza de date cataloage
deoarce:'.mysql_error());
}
mysql_close();
}
else{
die('<p> nu s-a putut crea conexiunea deoarece:'.mysql_error());
}
?>
</body>
</html>

Crearea unei tabele într-o bază de date

O dată creată baza de date, aceasta poate fi populată cu tabele în care


se vor memora datele aplicației.Sintaxa de bază pentru crearea unei tabele este
următoarea:
CREATE TABLE nume_tabela(coloana 1 tip 1, coloana 2 tip 2,...,
coloana n tip n)
Coloana 1, coloana 2,.. coloana n reprezintă campurile tabelei
Tip reprezintă tipul datelor care pot fi memorate în coloana respectivă

<html>
<head>
<title> script 2 </title>
<body>
<?php
$con=mysql_connect('localhost', 'root', '');
if($con) {
print '<p> S-a creat conexiunea!';
$sel=mysql_select_db("cataloage", $con);
if($sel){
print '<p> S-a selectat baza de date cataloage';
} else {
die ('<p> Nu s-a putut selecta baza de date cataloage
deoarece:'.mysql_error());
}
$query='CREATE TABLE catalog
( id int not null primary key auto_increment,
nume varchar(30) not null,
prenume varchar(40) not null,
nota int not null)';
if(mysql_query($query))
{print '<p>Tabela catalog a fost creata!';
} else {
die ( '<p> Nu se poate crea tabela catalog
deoarece :'.mysql_error());
}
mysql_close();
} else{
die('<p> nu s-a putut crea conexiunea deoarece:'.mysql_error());
}

Adăugarea datelor intr-o tabelă

Adăugarea datelor într-o tabelă se face cu ajutorul comenzii INSERT


INSET INTO nume_tabela(lista_nume_colane_tabela)
VALUES(lista_valori_pentru_coloane)

<html>
<head>
<title> script 2 </title>
<body>
<?php
if($_POST['trimite']){
$con=mysql_connect('localhost', 'root', '');
if($con) {
print '<p> S-a creat conexiunea!';
$sel=mysql_select_db("cataloage", $con);
if($sel){
print '<p> S-a selectat baza de date cataloage';
} else {
die ('<p> Nu s-a putut selecta baza de date cataloage
deoarece:'.mysql_error());
}
$ins="INSERT INTO catalog(id, nume, prenume, nota)
VALUES('', '$_POST[nume]', '$_POST[prenume]',
'$_POST[nota]')";
if(mysql_query($ins))
{
print '<p>Inregistrarea a fost adaugata la tabela catalog';
} else {
die('<p>Nu se poate face adaugarea deoarece:'.mysql_error());
}
mysql_close();
} else {
die ('<p> nu s-a putut crea conexiunea deoarece:'.mysql_error());
}
}else {
print '<form action="adaugare.php" method="POST">
<P> Nume:<br><input type=text name="nume" size 30>
<p>Prenume:<br><input type=text name="prenume" size 30>
<p>Nota:<br><input type=text name="nota" size 2><br>
<input type=submit name="trimite" value="Adaugare
inregistrare"></p>
</form>';
}
?>
</body>
</html>

Afișarea datelor dintr-o tabelă

Pentru afișarea datelor dintr-o tabelă se folosește comanda SELECT

Sintaxa este

SELECT lista_selectie
FROM nume_tabela
WHERE conditie
ORDER BY nume_coloana;

<html>
<head>
<title>script 4</title>
</head>
<body>
<?php

$con=mysql_connect('localhost', 'root', '');


if($con) {
print '<p> S-a creat conexiunea!';
$sel=mysql_select_db("cataloage", $con);
if($sel){
print '<p> S-a selectat baza de date cataloage';
} else {
die ('<p> Nu s-a putut selecta baza de date cataloage
deoarece:'.mysql_error());
}
$sql="SELECT * FROM catalog";
$rezultat=mysql_query($sql);
if($rezultat=mysql_query($sql));
if($rezultat) {
print'<p>lista inregistrarilor din catalog:';
print "<table border='1'>";
while($rand=mysql_fetch_array($rezultat)) {
$id=$rand['id'];
$nume=$rand['nume'];
$prenume=$rand['prenume'];
$nota=$rand['nota'];
print
"<tr><td>$id</td><td>$nume</td><td>$prenume</td><td>$nota</td></
tr>";
}
print"</table>";
mysql_close();
} else {
print '<p> catalogul nu a fost gasit';
}
} else {
die ('<p>nu s-a putut crea conexiunea deoarece:'.mysql_error());
}
?>
</body>
</html>

Creare baza de date cu MySQLi

Pentru a stoca informatii in MySQL, este nevoie de o baza de date.


Comanda CREATE DATABASE este folosita pentru a crea o baza de date in
MySQL.
- Sintaxa:
CREATE DATABASE database_name
Pentru a face un script PHP sa execute instructiunile SQL, mai intai trebuie sa creati o
instanta de obiect mysqli, care va contine conexiunea la server, apoi folositi metoda
query() din clasa MySQLi.
- Sintaxa:
mysqliObj->query($sql_query)
- mysqliObj - este instanta de obiect mysqli, creata cu new mysqli()
- $sql_query - este un sir cu instructiuni SQL.
Aceasta metoda trimite interogarea sau comanda la serverul MySQL, va returna
obiectul rezultat, sau TRUE la succes, FALSE in caz de eroare.

Exemplul urmator creaza o baza de date numita "tests":


<?php
// conectare la serverul MySQL
$conn = new mysqli('localhost', 'root', 'pass');

// verifica conexiunea
if (mysqli_connect_errno()) {
exit('Conectare nereusita: '. mysqli_connect_error());
}

// interogare sql cu CREATE DATABASE


$sql = "CREATE DATABASE `tests` DEFAULT CHARACTER SET utf8 COLLATE
utf8_general_ci";

// executa interogarea $sql pe server pentru a crea baza de date


if ($conn->query($sql) === TRUE) {
echo 'Baza de date "tests" a fost creata';
}
else {
echo 'Error: '. $conn->error;
}

$conn->close();
?>