PHP Veri Nesneleri (PDO) eklentisi, PHP’deki veritabanlarına erişmek için hafif ve tutarlı bir arayüz tanımlar. PDO arayüzü tanımı bulunan her veritabanı sürücüsü, veritabanına özgü özellikleri sıradan eklenti işlevleri olarak ifade edebilir
Başlangıç için bu kadar bilgi yeterli değilse buradan manuel sayfasındaki dokümanlara göz atabilirsiniz.
PHP 5 + sürümleri ile uyumluluk göstermektedir, desteklediği veritabanları şunlardır
- DBLIB: FreeTDS / Microsoft SQL Server / Sybase
- Firebird (http://firebird.sourceforge.net/): Firebird/Interbase 6
- IBM (IBM DB2)
- INFORMIX – IBM Informix Dynamic Server
- MYSQL (http://www.mysql.com/): MySQL 3.x/4.0
- OCI (http://www.oracle.com): Oracle Call Interface
- ODBC: ODBC v3 (IBM DB2 and unixODBC)
- PGSQL (http://www.postgresql.org/): PostgreSQL
- SQLITE (http://sqlite.org/): SQLite 3.x
Local serverinizde phpinfo() fonksiyonumuzu çalıştıralım ve PDO eklentisinin aktif olup olmadığını görelim.
pdo_mysql kelimesini arama yapın uygun sonuç varsa işlem yapmamıza gerek yok , eğer yoksa php.ini dosyamızda birkaç değişiklik yapacağız.
Mysql için eklenti kodumuz
[PHP_PDO]
extension=php_pdo.dll
[PHP_MYSQL]
extension=php_mysql.dll
desteklediği diğer veritabanları için php.ini dosyamıza eklenecek kodlarımız
extension=php_pdo.dll extension=php_pdo_firebird.dll extension=php_pdo_informix.dll extension=php_pdo_mssql.dll extension=php_pdo_mysql.dll extension=php_pdo_oci.dll extension=php_pdo_oci8.dll extension=php_pdo_odbc.dll extension=php_pdo_pgsql.dll extension=php_pdo_sqlite.dllHangi driverlerimiz aktif onu görelim
PDO::getAvailableDrivers() statik metodumuz ile kontrol edelim
<?php
foreach(PDO::getAvailableDrivers() as $driver)
{
echo $driver.'<br />';
}
?>database driverleri default konumdaysa muhtemelen sonuç şu şekil olmalı
- mysql
- sqlite
- sqlite2
Örnek Mysql veritabanımıza bağlanalım
<?php
try {
$db = new PDO("mysql:dbname=test;host=localhost", "user", "pass" );
echo "PDO connection!";
}
catch(PDOException $e)
{
echo $e->getMessage();
}
?>Herhangi problem yoksa PDO connection! mesajını göreceksiniz.Örnek PostgreSQL veritabanımıza bağlanalım
<?php
try {
$db = new PDO("pgsql:dbname=test;host=localhost", "user", "pass" );
echo "PDO connection!";
}
catch(PDOException $e)
{
echo $e->getMessage();
}
?>Örnek SQLite veritabanımıza bağlanalım<?php
try {
$db = new PDO("sqlite:/path/to/database.sdb");
}
catch(PDOException $e)
{
echo $e->getMessage();
}
?>Bağlantı kodumuzda try ve catch bloğumuz içerisine yazdığımız bağlantı kodumuz hata olasılığında catch kısmı devreye girecektir.Çalışmamızı try kod bloğunun içinde yapmamız daha temiz olacaktır.
Tüm veritabanlarını listeleyelim
foreach ($db->query('SHOW DATABASES') as $row) {
print_r($row);
}Insert$db->exec("INSERT INTO cms(name, languages) VALUES ('wordpress', 'PHP')");Select$sql = "SELECT * FROM cms";
foreach ($db->query($sql) as $row)
{
echo $row['name'].' : '.$row['languages'].'<br />';
}Update$db->exec("UPDATE cms SET name='habari' WHERE languages='PHP'");Daha detaylı bilgi isterseniz php.net manuel veya buradan ulaşabilirsiniz.http://www.oguzkoc.com.tr/php-data-object-pdo/