Bir PDO bağlantısı oluşturmak için PDO sınıfından yeni bir nesne türetilir. Bu işlem sırasında veritabanı türü, sunucu adresi, veritabanı adı, kullanıcı adı ve şifre gibi bilgiler parametre olarak gönderilir.
PHP
<?php
$host = 'localhost';
$dbname = 'test_db';
$username = 'root';
$password = '';
$charset = 'utf8mb4';
$dsn = "mysql:host=$host;dbname=$dbname;charset=$charset";
try {
// PDO Nesnesi oluşturma
$pdo = new PDO($dsn, $username, $password);
// Hata modunu ayarlama (İstisnaları fırlatır)
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// Varsayılan veri getirme modunu objeye çevirme
$pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ);
echo "Bağlantı başarıyla sağlandı!";
} catch (PDOException $e) {
// Bağlantı hatası durumunda mesajı göster
die("Bağlantı hatası: " . $e->getMessage());
}
?>
PDO bağlantısını yapılandırırken kullanılan bazı kritik ayarlar şunlardır:
DSN (Data Source Name): Veritabanı sürücüsünü ve bağlantı detaylarını içeren metindir (Örn: mysql:host=localhost;dbname=test).
ATTR_ERRMODE: Hataların nasıl yönetileceğini belirler. ERRMODE_EXCEPTION kullanımı, hataları yakalamak (try-catch) için en profesyonel yöntemdir.
ATTR_DEFAULT_FETCH_MODE: Verilerin hangi formatta döneceğini belirler. FETCH_ASSOC (dizi) veya FETCH_OBJ (nesne) en yaygın olanlarıdır.
Güvenlik: SQL Injection riskini minimize eder.
Esneklik: Yarın veritabanınızı MySQL'den PostgreSQL'e taşımaya karar verirseniz, kodunuzun büyük bir kısmını değiştirmeniz gerekmez.
Nesne Yönelimli: Modern PHP standartlarına (OOP) tamamen uygundur.
PHP scripti sonlandığında bağlantı otomatik olarak kapanır. Ancak manuel olarak kapatmak isterseniz, oluşturduğunuz PDO nesnesine null değerini atamanız yeterlidir:
PHP
$pdo = null;