PDO (PHP Data Objects) Nedir ?
PDO'nun ana hedeflerinden bazıları şunlardır:
- Taşınabilirlik: PDO, farklı veritabanı türleri arasında taşınabilir bir API sunar. Bu sayede aynı kod tabanını kullanarak farklı veritabanı sistemleriyle çalışabilirsiniz. Örneğin, aynı kodu MySQL ve PostgreSQL gibi farklı veritabanlarına uyarlayabilirsiniz.
- Güvenlik: PDO, SQL enjeksiyonu gibi güvenlik tehditlerine karşı otomatik olarak koruma sağlamak üzere tasarlanmıştır. Parametreli sorgular ve hazır ifadeler kullanarak veri girişlerini güvenli bir şekilde işlemenizi sağlar.
- Performans: PDO, sorguları hazır ifadeler şeklinde oluşturduğunda, sorgu derlemesinin veritabanı sunucusunda bir kere gerçekleşmesini sağlar. Bu, aynı sorguyu birden çok kez çalıştırmak zorunda kaldığınızda performans avantajı sağlar.
- PDO Sürücüleri (Drivers): Farklı veritabanı sistemleri için özelleştirilmiş PDO sürücüleri bulunur. Her sürücü, belirli bir veritabanı türüyle iletişim kurmanıza yardımcı olur. Örneğin, MySQL için "pdo_mysql", PostgreSQL için "pdo_pgsql" gibi.
- PDO İfadeleri (Statements): PDO kullanarak oluşturulan sorguları ifadeler olarak adlandırabiliriz. Hazır ifadeler, veri girişlerini parametrelerle güvenli bir şekilde işlemenize olanak tanır.
- PDO Bağlantı Nesneleri (Connection Objects): PDO bağlantı nesneleri, veritabanına bağlanmanızı sağlar. Bağlantı nesnesi oluşturulduğunda, belirli bir veritabanı sürücüsü seçilir ve bu sürücüye özgü işlevler ve yöntemler kullanılabilir.
Kod:
// Veritabanına bağlanma
$dsn = "mysql:host=localhost;dbname=mydatabase";
$username = "username";
$password = "password";
try {
$connection = new PDO($dsn, $username, $password);
$connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
echo "Bağlantı hatası: " . $e->getMessage();
}
// Hazır ifade kullanımı
$stmt = $connection->prepare("SELECT * FROM users WHERE username = :username");
$username = "john";
$stmt->bindParam(":username", $username);
$stmt->execute();
// Sonuçları alma
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
PDO, veritabanı işlemlerini daha güvenli ve taşınabilir hale getirmek için oldukça kullanışlı bir araçtır. Bu nedenle, modern PHP uygulamalarında sıklıkla tercih edilen bir veritabanı erişim katmanıdır.
- Transaksiyon Yönetimi: PDO ile veritabanı işlemlerini transaksiyonlar içinde gerçekleştirebilirsiniz. Bu, birden fazla sorgunun bir arada çalışmasını ve gerektiğinde işlemi geri alma veya tamamlama esnekliği sağlar.
Kod:
try {
$connection->beginTransaction();
// Veritabanı sorguları
$connection->commit(); // İşlemi onayla
} catch (PDOException $e) {
$connection->rollBack(); // İşlemi geri al
echo "Hata: " . $e->getMessage();
}
2.Çoklu Sorgular: PDO ile birden fazla sorguyu tek bir bağlantı üzerinden sırayla veya eş zamanlı olarak çalıştırabilirsiniz.
Kod:
$stmt1 = $connection->prepare("INSERT INTO table1 (column1) VALUES (?)");
$stmt2 = $connection->prepare("INSERT INTO table2 (column2) VALUES (?)");
$value = "data";
$stmt1->execute([$value]);
$stmt2->execute([$value]);
3.Veri Ekleme ve Güncelleme: PDO ile veritabanına yeni veri eklemek veya varolan veriyi güncellemek oldukça kolaydır.
Kod:
$stmt = $connection->prepare("INSERT INTO users (username, email) VALUES (?, ?)");
$stmt->execute([$username, $email]);
$stmt = $connection->prepare("UPDATE users SET email = ? WHERE id = ?");
$stmt->execute([$newEmail, $userId]);
4.Son Eklenen ID'yi Almak: Veritabanına yeni bir kayıt eklediğinizde, bu işlemin sonucunda otomatik olarak oluşturulan ID'yi alma işlemi PDO ile kolaylıkla yapılabilir.
Kod:
$stmt = $connection->prepare("INSERT INTO products (name) VALUES (?)");
$stmt->execute([$productName]);
$lastInsertId = $connection->lastInsertId();
5.Sorgu Sonuçlarını Alma: PDO ile sorguların sonuçlarını almak ve işlemek için farklı yöntemler kullanabilirsiniz. Örneğin fetchAll() ile tüm sonuçları bir dizi olarak alabilirsiniz.
Kod:
$stmt = $connection->prepare("SELECT * FROM products");
$stmt->execute();
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);
6.Veri Silme: Veritabanından veri silme işlemini PDO ile gerçekleştirebilirsiniz.
Kod:
$stmt = $connection->prepare("DELETE FROM users WHERE id = ?");
$stmt->execute([$userId]);
7.Veritabanı Şemasını Sorgulama: PDO ile veritabanı şemasını (tablo isimleri, sütunlar, vb.) sorgulamak için PDO'nun getColumnMeta() fonksiyonunu kullanabilirsiniz.
Kod:
$stmt = $connection->prepare("SELECT * FROM users");
$stmt->execute();
$columns = [];
for ($i = 0; $i < $stmt->columnCount(); $i++) {
$columns[] = $stmt->getColumnMeta($i)['name'];
}
print_r($columns);
PDO, veritabanı işlemleri ve yönetimi için oldukça esnek bir araçtır. Yukarıdaki örnekler, PDO'nun çeşitli yeteneklerini göstermektedir, ancak bu sadece birkaç örnekten ibarettir. Projelerinize göre PDO'yu kullanarak daha karmaşık işlemleri gerçekleştirebilirsiniz.
Konumu Okuduğunuz İçin Teşekkür Ederim.