pdo
PHP PDO Kullanımı
5 (100%) 1 vote

PDO

Merhabalar bu yazım da sizlere PHP’nin yeni nesil veri tabanına bağlanış arayüzü olan PDO‘dan bahsedeceğim.

Artık “mysql_connect“, “mysql_query” fonksiyonlarının müfredattan kalkma zamanı geliyor, PHP’de kendi resmi dökümantasyonunda da bunun sinyalini vermeye başlamış; “mysql” fonksiyonlarının sayfasında aşağıdaki gibi bir öneriyle karşılaşıyoruz;

This extension is not recommended for writing new code. Instead, either the mysqli or PDO_MySQL extension should be used. See also the MySQL API Overview for further help while choosing a MySQL API.

Yani burada kısacası artık burada ki bağlantı biçimini kullanmanızı önermiyoruz PDO ya da MySQli‘e geçiş yapın gibi ibareler kullanıyor.

Peki PDO ile MySQli arasındaki fark nedir?

PDO’da çoğu veritabanı sürücüsü kullanılmasına olanak sağlayan, MySQLi ise sadece MySQL destekleyen ve PDO’ya göre biraz daha karmaşık ve kapsamlı bir arayüz diyebiliriz.

   PDO NEDİR?

 PDO(PHP Data Objects / PHP Veri Objeleri) özetle; hafif ve tutarlı bir şekilde veri tabanına erişimi sağlayan bir arayüz. Şöyle bir açıklama yaparsak “Object Oriented Programming” arayüzüne sahip, onlarca veritabanı sürücüsü destekliyor bunlar şöyle ki;

  1. Cubrid
  2. FreeTDS / Microsoft SQL Server / Sybase
  3. Firebird/Interbase 6
  4. IBM DB2
  5. IBM Informix Dynamic Server
  6. MySQL 3.x/4.x/5.x
  7. Oracle Call Interface
  8. ODBC v3 (IBM DB2, unixODBC and win32 ODBC)
  9. PostgreSQL
  10. SQLite 3 and SQLite 2
  11. Microsoft SQL Server / SQL Azure

Bunların haricinde PDO‘nun çalışabilmesi için güncel versiyonlara ihtiyaç duyulmaktadır.

   PDO ile MySQL’e bağlanmak

Genel olarak bağlantı olaylarını bir PDO sınıfını tanımlarken bir DSN yani “Data Source Name” ile belirtiyoruz. Hangi veri tabanı sürücüsüne bağlanacağımızı ve bilgilerimizi DSN ile ifade ediyoruz. Diğer iki parametrede ise veritabanı kullanıcı adı ve şifremizi giriyoruz. Örneğin;

$db = new PDO('mysql:host=localhost;dbname=test', $kad, $sifre);
$dsn = 'mysql:host=localhost;dbname=test';
$kad = 'dbkad';
$sifre = 'mypassword';
try {
$db = new PDO($dsn, $kad, $sifre);
}
catch(PDOException $e) {
echo 'Connection failed: ' .$e;
}

Bu şekilde bağlantı hatalarını fark edebiliyoruz.

PDO İle Sorgu Göndermek

Eğer yapacağımız sorgudan bir sonuç almayı beklemiyorsak “exec“, bir sonuç isteniyorsa “query” methodlarını kullanmalıyız. Özetle; “DELETE/UPDATE/INSERT” gibi sorgularımız için “exec”, “SELECT” gibi sorgularımız için “query”.

try {
$db = new PDO('mysql:host=localhost;dbname=test', $kad, $sifre);
$db->exec('SET NAMES `UTF-8`');
$count = $db->exec('DELETE FROM messages WHERE old = 1');
echo $count . ' messages deleted';
}
catch (PDOException $e) {
echo 'Connection failed: ' .$e;
}

   PDO ile verileri listelemek

Bunun için query methodu kullanılmalıdır.

foreach($db->query('SELECT * FROM users') as $row)
{
echo $row['name'] ;
}

  PDO ile bir satır veri çekmek

Bunun için query ile sorgumuzu çağırdıktan sonra fetch ile ilk sonucu alacağız.

$row = $db->query('SELECT * FROM users WHERE id = 1')->fetch();
echo $row['name'];

  Yeni bir kayıt eklemek

Yeni bir kayıt eklemek için exec methodunu kullanacağız. Sonrasında eğer eklediğimiz satırın ID’sini almak istiyorsak lastInsertId metodunu çağıracağız. Eklerken bir sorun gerçekleşirse exec methodu false dönecektir. Bu nedenle öncelikle eklenip eklenmediği kontrol edip sonrasında ID’yi ekrana yazdırabiliriz.

if($db->exec('INSERT INTO users (name) VALUES ("Ali")'))
{
$id = $db->lastInsertId();
echo 'Yeni eklenen üyenin IDsi: ' . $id;
}
else
{
echo 'Yeni kayıt eklerken bir hata meydana geldi.';
}

Böylelikle PDO ile ilgili birtakım bilgilere sahip olarak veri bağlantısını sağlamanız daha kolay olacaktır.

Comments

  1. Merhabalar, yazı çok net ve anlaşılır şekilde yazılmış. Günümüzde internet siteleri gerçekten internet çöplüğüne dönmüşken bu kadar sade ve net bir şekilde açıklanmış yazı okumak zevkliydi.

    Teşekkürler, bu güzel bilgiler için.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir