Başlıktan anlaşılacağı gibi konumuz PDO yani PHP Data Object , kısaca nedir manuel sayfasından bir özetlemek gerekirse :
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


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.dll
Hangi 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/