PDO Nedir ?

PDO isminden de anlaşılacağı gibi PHP Veri Nesneleri (PDO) eklentisidir. Yani kısaca ve anlaşılır bir şekilde özetlemek gerekirse, eskiden PHP'de kullandığımız mysql_ komutlarının yerine gelen daha hafif ve güvenli bir eklentidir.

PHP.NET Sayfasında PDO Tanımı İse;


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. Yalnız dikkat edin, PDO eklentisinin kendisini her veritabanı işlevi için kullanamazsınız; bir veritabanı sunucusuna erişmek için veritabanına özgü PDO sürücüsünü kullanmalısınız.

PDO bir veri erişimli soyutlama katmanı sağlar, yani, kullandığınız veritabanından bağımsız olarak sorguları çalıştırmak ve sonuçları döndürmek için aynı işlevleri kullanabilirsiniz. PDO bir veritabanı soyutlaması yapmaz; SQL deyimini yeniden yazmaz ya da olmayan özellikleri taklit etmez. Bu özellikleri istiyorsanız tam gelişmiş soyutlama katmanını kullanmalısınız.

PDO, PHP 5.1'den itibaren PHP ile birlikte gelir ve PHP 5.0'dan beri bir PECL eklentisi olarak da mevcuttur. PDO, PHP 5'teki yeni nesne yönelimli özelliklere ihtiyaç duyar; bu bakımdan PHP'nin daha önceki sürümleri ile çalışmaz.


PDO'nun ne olduğunu birincil ağızdan dinlediğimize göre artık kullanımına geçebiliriz..

PDO Serverimizde Mevcut mu ?
Öncelikle PDO'yu serverinizde çalıştırabilmeniz için PDO eklentisinin aktif olması gerekmektedir. Bunu öğrenmek için herhangi bir php dosyasına phpinfo();
komutunu yazıp çalıştıralım. Çıkan sonuçta eğer resimde ki gibi bir alan mevcutsa PDO MySQL eklentisi başarıyla çalışacaktır..



PDO İle MySQL Bağlantısı Kurma
PDO'yu serverimizde çalışabileceğini öğrendikten sonra sıra geldi veritabanımız ile bağlantı kurmaya bunun için yapmanız gerekenler çok basit, ancak mysql_connect ve buna benzer mysql_ komutlarına alışanların bu PDO serüveninde biraz zorluk çekeceğini söyleyebiliriz..


// PDO ile Veritabanımıza Bağlanıyoruz...

$db = new PDO("mysql:dbname=databaseadi;host=localhost","kullaniciadi","sifre");

// Bu kod satırı ile bağlantımızı Oluşturduk peki bağlantı kuruldu mu ?
// Benim kullandığım test etme şekli...
try
{
$db = new PDO("mysql:dbname=databaseadi;host=localhost","kullaniciadi","sifre");
echo "PDO Connection...";
}
catch(PDOException $e) // İstisna Durumunda
{
echo $e->getMessage(); // Hata mesajını yazdır..
}

Bu kodlar ile veritabanı bağlantımızı kurup test etmiş oluyoruz..

PDO İle Sorgu (Query) Gönderme İşlemi

mysql_query ile yapılan sorguların yerini ise artık bu kullanım alıyor.


$query = $db ->query("Sorgu Kodumuz");

Peki sorgumuzu yaptık peki sorgu oldu mu ? yani başarılı bir şekilde sorgumuz gerçekleşti mi ? bunun için yapmanız gereken..

$query = $db ->query("SELECT * FROM uye");
if(!$query)
echo "Sorgu Başarısız...";
else
echo "Sorgu Başarılı...";

Böylece sorgumuzu gönderip sorgunun olup olmadığını anlıyoruz..

PDO İle Verileri Listeleme

PDO ile sorgumuzu kontrol ettik. Peki kontrol başarılıysa ve listeleme yapmak istiyorsak bunu eskiden yaptığımız mysql_fetch_array(); komutu yerine uzun süredir kullanmadığım foreach döngüsü ile gerçekleştiriyoruz. Gerçekten fazla kullanmadığım bir döngüydü özlemişim :)


foreach($sorgu as $row){
echo $row[uye_adi];
}

Bu kod ile tüm üyelerin adını döngü içinde listeledik peki ya koşullu bir şekilde yapsaydık ve sadece bir sonuç arıyorsak bunun için ne yapacaktık ?
Aslında bu sorununda cevabı foreach'de ancak belki de başka bir PDO komutu ile de aynı işlevi yapabiliyoruzdur bunun için eğer başka bir yöntemi olan yada bilgisi olan bizimle paylaşırsa memnun oluruz..

$sorgu2 = $db->query("SELECT * FROM uye WHERE kullanici_id = 2 ");
if(!$sorgu2)
echo "Sorgu Başarısız";
else{
foreach($sorgu2 as $row2) // Çıkan değeri $row2 adında bir diziye atadık.

echo $row2[kullanici_adi];
echo $row2[kullanici_sifre];
echo $row2[kullanici_mail];

}

PDO İle Veri Ekleme İnsert Komutu
Sorgulama işlemiyle aynı aslına bakarsanız yapmanız gereken sadece sql deyiminizi değiştireceksiniz..

$query_ekle = $db ->query("INSERT INTO uye (uye_adi,uye_sifre) VALUES ('ENES','GÜR')");
if($query_ekle)
echo "ekleme oldu";
else
echo "ekleme olmadı..";


PDO UPDATE Yapma

$query_guncel = $db->query("UPDATE uye SET uye_adi='enes', uye_mail='enes@enes.com' WHERE uye_id=15");
if(!$query_guncel)
echo "Güncelleme Başarısız..";
else
echo "Güncelleme Başarılı";


PDO ile Tek Satırlık Veri Çekmek

$row = $db->query('SELECT * FROM ogrenciler WHERE id = 1')->fetch()

fetch(); ile foreach yerine tek satırlık veriler çekmek için kullanabiliriz...

PDO ile yapılacak temel olaylar bunlardır zaten genellikle ve sıkça kullandığımız veritabanı işlemleri de bunlar tabi daha vardır muhakkak ki. Bu yazımda sizlere PDO ile veritabanı işlemlerini gösterdim umarım yararlı olmuştur. İyi çalışmalar..

Güncelleme: 30.05.2013