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:
foreach(PDO::getAvailableDrivers() as $driver) { echo $driver.'
'; }
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:
<?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.
<?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:
<?php try { $dbh = new PDO("pgsql:host=localhost port=5432 dbname=pdo", "username", "password"); echo "PDO connection object created"; } catch(PDOException $e) { echo $e->getMessage(); } ?>
<?php try { // connect to SQLite database $dbh = new PDO("sqlite:/path/to/database.sdb"); } catch(PDOException $e) { echo $e->getMessage(); } ?>
<?php try { $dbh = new PDO("firebird:dbname=localhost:C:\Programs\Firebird\DATABASE.FDB", "SYSDBA", "masterkey"); } catch (PDOException $e) { echo $e->getMessage(); } ?>
<?php try { $dbh = new PDO("informix:DSN=InformixDB", "username", "password"); } catch (PDOException $e) { echo $e->getMessage(); } ?>
<?php try { $dbh = new PDO("OCI:dbname=accounts;charset=UTF-8", "username", "password") } catch (PDOException $e) { echo $e->getMessage(); } ?>
<?php try { $dbh = new PDO("odbc:Driver={Microsoft Access Driver (*.mdb)};Dbq=C:\accounts.mdb;Uid=Admin"); } catch (PDOException $e) { echo $e->getMessage(); } ?>
<?php $hostdb = "localhost"; $port = 10060; $namedb = "my_database"; $userdb = "username"; $passdb = "password"; try { $dbh = new PDO ("dblib:host=$hostdb:$port;dbname=$namedb","$userdb","$passdb"); } catch (PDOException $e) { echo $e->getMessage(); } ?>
<?php try { $db = new PDO("ibm:DRIVER={IBM DB2 ODBC DRIVER};DATABASE=accounts; HOSTNAME=1.2.3,4;PORT=56789;PROTOCOL=TCPIP;", "username", "password"); } catch (PDOException $e) { echo $e->getMessage(); } ?>
In mod normal, PHP inchide conexiunea la baza de date dupa ce a fost executat tot scriptul. Dar deconectarea se poate face si intentionat, atribuind valoare null la obiectul PDO, dupa cum e prezentat in exemplu de mai jos.
Instanta la acel obiect va fi distrusa, prin urmare, aceasta metoda trebuie adaugata dupa ce au fost scrise toate instructiunile care trebuie aplicate obiectului PDO.
- Deconectarea prin aceasta metoda este utila deoarece elibereaza memoria folosita.
<?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'; /* Instructiuni de lucru cu $dbh */ $dbh = null; // Inchidere conexiune } catch(PDOException $e) { echo $e->getMessage(); } ?>
<input type="number" name="points" min="5" max="80" />
#id { filter:alpha(opacity=40); /* for IE */ opacity:0.4; }
var num = 12.84567; alert( num.toPrecision(3) ); // 12.8
$lang =[10=>"PHP", 20=>"JavaScript", "site"=>"coursesweb.net"); shuffle($lang); var_export($lang); // array (0=>"coursesweb.net", 1=>"PHP", 2=>"JavaScript")
She is the best in our class. - Ea este cea mai buna din clasa noastra.
Él es el mejor en nuestra clase. - El este cel mai bun din clasa noastra.