Bağlantılar temel PDO sınıfının örneklenmesiyle kurulur. Hangi sürücüyü kullanacağınızın bir önemi yoktur; daima PDO sınıf ismini kullanacaksınız. Veritabanı kaynağını (nam-ı diğer DSN) ve isteğe bağlı olarak kullanıcı ismini ve parolasını belirtmek için kurucuyu kullanabilirsiniz.
Örnek 1 - MySQL'e bağlanmak
<?php
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
?>
Bir hata oluşursa bu bir PDOException istisnasına sebep olur. Hatayı ele almak için istisnayı yakalayabilir veya işi set_exception_handler() üzerinden ayarladığınız bir küresel hata işleme uygulamasına bırakabilirsiniz.
Örnek 2 - Bağlantı hatalarının ele alınışı
<?php
try {
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
foreach($dbh->query('SELECT * from FOO') as $row) {
print_r($row);
}
$dbh = null;
} catch (PDOException $e) {
print "Hata!: " . $e->getMessage() . "<br/>";
die();
}
?>
Uygulamanız, PDO kurucusu tarafından tetiklenen istisnayı yakalamazsa betiği sonlandırıp bir hata geri izlemesi oluşturmak için denetim öntanımlı olarak zend motoruna geçer. Bu geri izleme, kullanıcı ismi ve parola dahil veritabanı bağlantısıyla ilgili tüm ayrıntıları ortaya döker. Bu istisnayı yakalamak sizin sorumluluğunuzdadır. Bunu ya doğrudan catch deyimiyle ya da örtük olarak set_exception_handler() üzerinden yaparsınız.
Veritabanı bağlantısının başarıyla kurulmasıyla betiğinize PDO sınıfının bir
örneği döner. PDO nesnesinin ömrü boyunca bağlantı etkin kalır. Bağlantıyı
kapatmak için, nesneye gönderimli herşeyin silindiğinden emin olarak nesneyi
yok etmeniz gerekir; bunu nesneyi tutan değişkene NULL
atayarak
yapabilirsiniz. Bunu siz yapmazsanız, PHP betiğiniz sonlandığında bunu sizin
yerinize yapacaktır.
Örnek 3 - Bir bağlantının kapatılışı
<?php
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
// burada bağlantıyı kullanıyoruz
// İşimiz bittiğine göre bağlantıyı kapatabiliriz.
$dbh = null;
?>
Çoğu HTTP uygulaması veritabanı sunucularına kalıcı bağlantılardan medet umar. Kalıcı bağlantılar betiğin işi bittiğinde kapatılmaz, önbelleğe alınıp aynı kimlik kanıtlarıyla bağlantı kurmak isteyen başka betiklerce kullanılır. Kalıcı bağlantı önbelleği, bir betiğin bir veritabanı ile her iletişime geçme isteğinde yeni bir bağlantı kurma maliyetini ortadan kaldırır ve uygulamanın daha hızlı çalışmasını sağlar.
Örnek 4 - Kalıcı bağlantılar
<?php
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass, array(
PDO::ATTR_PERSISTENT => true
));
?>
Bilginize:
Kalıcı bağlantı kullanmak için PDO kurucusuna aktarılan sürücü seçenekleri dizisinde
PDO::ATTR_PERSISTENT
sabitineTRUE
atamalısınız. Nesneyi ilklendirdikten sonra bu özelliği etkin kılmak isterseniz sürücü kalıcı bağlantıları kullanmayacaktır.
Bilginize:
PDO ODBC sürücüsünü kullanıyorsanız ve ODBC küüphaneleriniz ODBC Bağlantı Havuzlarını destekliyorsa (hem unixODBC hem de Windows bunu yapar; başkaları da olabilir) kalıcı PDO bağlantılarını kullanmanız önerilmez; bağlantı önbelleklemesini ODBC Bağlantı Havuzlama katmanına bırakmak daha iyidir. ODBC Bağlantı Havuzu bağlantıyı süreçteki diğer modüllerle paylaşır; eğer PDO bağlantıyı önbelleklemeye çalışırsa bu bağlantı asla ODBC bağlantı havuzuna dönmez ve sonuçta diğer modüllere hizmet vermek için ek bağlantılar oluşur.