PHP PDO (PHP Data Objects), PHP'de veri tabanı işlemlerini daha güvenli ve nesne yönelimli şekilde gerçekleştirmeyi sağlayan bir eklentidir. PDO, farklı veri tabanlarıyla (MySQL, PostgreSQL, SQLite vb.) çalışabilme imkânı sunar. PDO ile temel veri tabanı işlemlerine (CRUD) örnekleriyle bakalım.
PDO veri tabanı bağlantısı için , sunucu , veri tabanı adı , kullanıcı adı ve şifre bilgilerinin bulunması gerekir.
<?php
$host = 'localhost';
$db = 'ornek_veritabani';
$user = 'root';
$pass = '';
$charset = 'utf8mb4';
$dsn = "mysql:host=$host;dbname=$db;charset=$charset";
try {
$pdo = new PDO($dsn, $user, $pass);
// PDO hata modunu exception olarak ayarlıyoruz.
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Bağlantı başarılı!";
} catch (PDOException $e) {
echo "Bağlantı hatası: " . $e->getMessage();
}
?>
PDO sınıfı üzerinden bir DSN (Data Source Name) oluşturulur. try-catch bloğu ile bağlantı hataları kontrol altına alınır. Yada try catch bloğu ve değişken kullanmadan aşağıdaki gibi tek satırlada bağlantı sağlanabilir.
<?php
$pdo = new PDO("mysql:host=localhost;dbname=ornek_veritabani;charset=utf8mb4", "root", "");
?>
Bu versiyon hata yönetimi yapmaz, dolayısıyla bir bağlantı hatasında doğrudan PHP uyarısı verir. Geliştirme dışında genellikle önerilmez ama en kısa haliyle budur.
<?php
$pdo = new PDO("mysql:host=localhost;dbname=ornek_veritabani;charset=utf8mb4", "root", "");
$sql = "INSERT INTO kullanicilar (isim, email) VALUES (:isim, :email)";
$stmt = $pdo->prepare($sql);
$stmt->execute([
':isim' => 'Ahmet Yılmaz',
':email' => 'ahmet@example.com'
]);
echo "Kayıt eklendi.";
?>
prepare() metodu ile SQL sorgusu hazırlanır, ardından execute() ile veriler bağlanarak sorgu çalıştırılır. Bu yöntem SQL injection'a karşı güvenlidir.
<?php
$pdo = new PDO("mysql:host=localhost;dbname=ornek_veritabani;charset=utf8mb4", "root", "");
$sql = "SELECT * FROM kullanicilar";
$stmt = $pdo->query($sql);
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
echo "ID: {$row['id']} - İsim: {$row['isim']} - Email: {$row['email']}<br>";
}
?>
query() direkt sorgu çalıştırmak için kullanılır. fetch() ile sonuçlar döngüyle çekilir.
<?php
$pdo = new PDO("mysql:host=localhost;dbname=ornek_veritabani;charset=utf8mb4", "root", "");
$sql = "UPDATE kullanicilar SET email = :email WHERE id = :id";
$stmt = $pdo->prepare($sql);
$stmt->execute([
':email' => 'yeniemail@example.com',
':id' => 1
]);
echo "Kayıt güncellendi.";
?>
Belirli bir kaydı güncellemek için UPDATE sorgusu kullanılır. Parametreler yine güvenli şekilde bağlanır.
<?php
$pdo = new PDO("mysql:host=localhost;dbname=ornek_veritabani;charset=utf8mb4", "root", "");
$sql = "DELETE FROM kullanicilar WHERE id = :id";
$stmt = $pdo->prepare($sql);
$stmt->execute([':id' => 2]);
echo "Kayıt silindi.";
?>
Veri silme işlemi için DELETE komutu kullanılır. Silinecek kayıt id'ye göre seçilir.
PDO ile çalışırken hata ayıklamak için try-catch
yapısı kullanılmalıdır:
<?php
$pdo = new PDO("mysql:host=localhost;dbname=ornek_veritabani;charset=utf8mb4", "root", "");
try {
$stmt = $pdo->prepare("SELECT * FROM olmayan_tablo");
$stmt->execute();
} catch (PDOException $e) {
echo "Hata: " . $e->getMessage();
}
?>
✅ PDO, SQL injection’a karşı etkili koruma sağlar.
✅ Hazırlanmış ifadeler (prepared statements) kullanılmalıdır.
✅ bindParam() veya execute() ile değerler parametre olarak bağlanmalıdır.
PDO, hem esnekliği hem de güvenliği nedeniyle PHP ile veri tabanı işlemlerinde önerilen bir yaklaşımdır.
Toplam 33 Makale
Lütfen yorumlarınızda saygılı, yapıcı ve anlaşılır bir dil kullanın.
Küfür, hakaret ya da spam içerikler onaylanmaz.