PDO - uniwersalny interfejs baz danych
14 July 2008
Comments
PDO to interfejs do różnych baz danych takich jak MySQL, PostgreSQL, Oracle czy SQLite. Za pomocą tego samego interfejsu możemy korzystać z różnych baz danych. Dość dobry opis PDO znajdziemy w dokumentacji na php.net oraz w sieci. PDO dostępne jest w PHP od wersji 5.1.0 lub też dla wszystkich wersji 5.* za pomocą rozszerzenia z PECL.Kolosalną przewagą PDO nad ADOdb czy PEAR:DB jest fakt iż jest to binarne rozszerzenie a nie skrypt PHP przez co szybkość i skalowalność PDO są znacznie większe niż w przypadku rozwiązań opierających się na kodzie PHP.
Prosty przykład wykorzystania PDO:
<?php
try {
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
foreach ($dbh->query('SELECT * FROM tabela') as $row)
{
print_r($row);
}
$dbh = null;
} catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "<br/>";
die();
}
<?php
$dbh = new PDO('mysql:host=localhost;dbname=NAZWA_BAZY', LOGIN, HASŁO); // mysql
$dbh = new PDO('sqlite:/ścieżka/baza.db'); // SQLite
$dbh = new PDO("pgsql:host=localhost port=5432 dbname=NAZWA_BAZY user=LOGIN password=HASŁO") // postgresql
$dbh = new PDO("firebird:User=LOGIN;Password=HASŁO;Database=NAZWA_BAZY;DataSource=localhost;Port=3050") // firebird
PDO pozwala również wykonywać "przygotowane" zapytania. W przypadku seryjnego dodawania danych do tej samej tabeli przygotowane zapytania znacznie przyśpieszają tą operację, dodatkowo przygotowane zapytania mogą mieć przypisane typy dla wszystkich zmiennych w zapytaniu, z dokumentacji:
<?php
$calories = 150;
$colour = 'red';
$sth = $dbh->prepare('SELECT name, colour, calories FROM fruit WHERE calories < :calories AND colour = :colour');
$sth->bindParam(':calories', $calories, PDO::PARAM_INT); // INT - zmienna liczbowa
$sth->bindParam(':colour', $colour, PDO::PARAM_STR, 12); // STR - łańcuch
$sth->execute();
RkBlog
Comment article