PHP PDO, PHP için bir veritabanı arabirimi sağlayan bir kütüphanedir. PDO, veritabanı bağlantıları, sorguları ve işlemleri gerçekleştirmek için kullanılır. Bu makalede, PHP PDO hakkında daha ayrıntılı bilgi vereceğim.
Php PDO Nedir?
PDO, veritabanı sürücülerini kullanarak MySQL, PostgreSQL, SQLite ve Oracle gibi farklı veritabanlarına erişim sağlar. PDO, veritabanı bağlantılarını yönetir, sorguları çalıştırır ve sonuçlarını işler.
PDO’nun en büyük avantajı, SQL enjeksiyonlarına karşı koruma sağlamasıdır. PDO, sorguları parametrelerle birleştirir, böylece kötü niyetli kullanıcıların sorgulara müdahale etmesi engellenir. Bu nedenle, PDO kullanmak, güvenlik açısından önemlidir.
PDO ayrıca, çeşitli veritabanı işlemlerini gerçekleştirmek için bir dizi yöntem sunar. Örneğin, veri eklemek, güncellemek, silmek, seçmek ve daha fazlasını yapabilirsiniz. PDO, veritabanı bağlantılarını da yönetir ve bağlantı hatalarını ele alır.
Php PDO ile Veritabanına Bağlanma
PDO kullanımı oldukça basittir. İlk olarak, PDO nesnesi oluşturarak başlarsınız ve ardından veritabanına bağlanırsınız. Daha sonra, PDO yöntemlerini kullanarak veritabanı işlemlerini gerçekleştirirsiniz. Aşağıdaki gibi bir PDO nesnesi oluşturabilirsiniz:
## Bağlantı Değişkenleri ## $hostname = "localhost"; $username = "root"; $pass = ""; $database = "test"; ## Mysql Bağlantı ## try { $db = new PDO("mysql:host=" . $hostname . "; dbname=" . $database . "; charset=utf8", "$username", "$pass"); echo "Bağlantı başarılı"; } catch (PDOException $error) { print $error->getMessage(); exit(); }
Bu kod, Kullanıcı adı ve şifre ile MySQL veritabanı sunucusuna bağlanır ve “test” veritabanına bağlanır. http://localhost/baglanti.php adresini tarayıcımda açtığımda ekrana bağlantı başarılı mesajını görüyorsanız veritabanı bağlantısı gerçekleşmiştir.
PDO ile Select Kullanımı
SELECT sorguları oluşturmak için PDO’nun query() fonksiyonu kullanılır. Bu fonksiyon, SQL sorgusu ile birlikte çağrılır.
Örneğe geçmeden önce select ile sorgu hazırlama hakkında detaylı bilgi için SQL Select Kullanımı başlıklı yazıma göz atabilirsiniz.
Aşağıdaki örnek, mytable adlı bir tablodan column1 ve column2 sütunlarını seçer:
$stmt = $db->query('SELECT column1, column2 FROM mytable');
Bu kodda, $stmt
değişkeni, sorgunun sonucunu tutmak için oluşturulur.
query() fonksiyonu yerine prepare() ve execute() fonksiyonlarını kullanarak da sorgular oluşturulabilir. Bu yöntem, özellikle sorgunun içinde değişkenler kullanılması gerektiğinde yararlıdır.
SELECT sorgusunun sonucu, fetchAll()
, fetch()
, fetchColumn()
gibi fonksiyonlar kullanılarak elde edilebilir.
fetchAll()
fonksiyonu, tüm sonuçları bir dizi olarak döndürür. Aşağıdaki örnekte, tüm sonuçlar $results
değişkenine atılır:
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);
fetch()
fonksiyonu, bir sonuç kaydını döndürür ve sonraki kayda geçer. Sorgu sonucunda bir sonraki kayıt kalmadığında false
değeri döndürür. Aşağıdaki örnekte, her kayıt $row
değişkenine atanır:
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { echo $row['column1'] . "\n"; echo $row['column2'] . "\n"; }
fetchColumn()
fonksiyonu, belirtilen sütundaki tek bir değeri döndürür. Aşağıdaki örnekte, column1
sütunundaki ilk değer $value
değişkenine atanır:
$value = $stmt->fetchColumn();
SELECT sorgusu oluştururken, sorgu içinde değişkenler kullanmak gerektiği durumlarda parametreler kullanılabilir. Bu, prepare() ve execute() fonksiyonları kullanılarak yapılır. Aşağıdaki örnek, mytable adlı tablodan column1 sütunundaki belirli bir değere sahip kayıtları seçer:
Kullanım şekli 1:
$value = 'foo'; $stmt = $db->prepare('SELECT * FROM mytable WHERE column1 = :value'); $stmt->execute(array(':value' => $value));
Bu örnekte, prepare()
fonksiyonu, SQL sorgusunu hazırlar ve :value
isimli bir parametre kullanır. execute()
fonksiyonu, parametrelere karşılık gelen değerleri içeren bir dizi alır ve sorguyu çalıştırır.
Kullanım şekli 2:
$value = 'foo'; $stmt = $db->prepare('SELECT * FROM mytable WHERE column1 = ?'); $stmt->execute(array($value));
Aynı örnekte anahtar kelime yerine soru işareti koyularak kullanmakta mümkündür. Birden fazla değişken olduğu durumlarda virgül ile ayrılarak yazılır. Her soru işareti bir değişkeni temsil eder.
SELECT sorgusunun sonucu sayısını almak için, rowCount()
fonksiyonu kullanılır. Aşağıdaki örnek, mytable
adlı tablodan column1
sütunundaki belirli bir değere sahip kaç kayıt olduğunu hesaplar
$value = 'foo'; $stmt = $db->prepare('SELECT * FROM mytable WHERE column1 = :value'); $stmt->execute(array(':value' => $value)); $count = $stmt->rowCount();
Bu örnekte, rowCount()
fonksiyonu, sorgunun sonucunda dönen kayıt sayısını döndürür.
PDO ile SELECT sorguları oluşturmak için bu temel adımlar kullanılır. Bu adımlar, çeşitli özellikler ve fonksiyonlar kullanılarak genişletilebilir. PDO’nun zengin özelliklerinden yararlanarak, karmaşık sorgular ve veritabanı işlemleri yapabilirsiniz.
PDO ile Insert Kullanımı
PDO (PHP Data Objects) ile veritabanına veri eklemek için aşağıdaki gibi bir kullanım örneği gösterilebilir:
Insert ile veri ekleme hakkında bilgi almak için SQL Insert Kullanımı başlıklı yazıma göz atabilirsiniz.
Kullanım şekli 1:
// Veri ekleme sorgusu $stmt = $dbh->prepare("INSERT INTO users (name, email, password) VALUES (:name, :email, :password)"); // Değiştirilecek parametreleri belirleme $stmt->bindParam(':name', $name); $stmt->bindParam(':email', $email); $stmt->bindParam(':password', $password); // Değişkenlere değer atama $name = 'John Doe'; $email = 'john.doe@example.com'; $password = '123456'; // Sorguyu çalıştırma $stmt->execute(); echo "Veri başarıyla eklendi.";
Yukarıdaki örnekte PDO
sınıfı kullanılarak users
tablosuna name
, email
ve password
sütunlarına veri ekleniyor. bindParam()
metodu kullanılarak değiştirilecek parametreler belirleniyor ve değişkenlere değer atandıktan sonra execute()
metoduyla sorgu çalıştırılıyor.
Kullanım şekli 2:
$name = 'John Doe'; $email = 'john.doe@example.com'; $password = '123456'; // Veri ekleme sorgusu $stmt = $dbh->prepare("INSERT INTO users (name, email, password) VALUES (?,?,?)"); // Sorguyu çalıştırma $stmt->execute($name,$email,$password); echo "Veri başarıyla eklendi.";
PDO ile Update Kullanımı
PDO update işlemi, veritabanında kayıtlı olan verilerin güncellenmesi için kullanılır. PDO’nun prepare() metodu kullanılarak güncelleme sorgusu hazırlanır. Sorgu içerisinde güncellenecek tablo adı, güncellenecek alanlar ve güncelleme yapılacak şartlar belirtilir. Son olarak execute() metodu ile hazırlanan sorgu çalıştırılır.
Update kullanarak veri güncelleme hakkında bilgi almak için SQL Update Kullanımı başlıklı yazıma göz atabilirsiniz.
Kullanım şekli 1:
// Güncelleme sorgusunun hazırlanması $query = $db->prepare("UPDATE uyeler SET ad = :ad, soyad = :soyad WHERE id = :id"); // Güncelleme için değişkenlerin atanması $id = 1; $ad = "John"; $soyad = "Doe"; // Sorgunun çalıştırılması $query->execute(array(':ad' => $ad, ':soyad' => $soyad, ':id' => $id));
Yukarıdaki örnekte, “uyeler” tablosunda id’si 1 olan kaydın “ad” ve “soyad” alanları güncelleniyor. Güncelleme sorgusu hazırlanırken prepare() metodu kullanılıyor ve ardından sorguda kullanılacak değişkenler atanıyor. Son olarak execute() metodu ile sorgu çalıştırılıyor ve güncelleme işlemi gerçekleştiriliyor.
Kullanım şekli 2:
// Güncelleme için değişkenlerin atanması $id = 1; $ad = "John"; $soyad = "Doe"; // Güncelleme sorgusunun hazırlanması $query = $db->prepare("UPDATE uyeler SET ad = ?, soyad = ? WHERE id = ?"); // Sorgunun çalıştırılması $query->execute(array($ad,$soyad,$id));
PDO ile Delete Kullanımı
Veri silmek için, PDO’nun prepare()
ve execute()
yöntemlerini kullanarak bir SQL sorgusu hazırlamamız gerekir. Aşağıdaki kod örneği, “mytable” adlı tablodan “id” sütunundaki belirli bir değeri içeren bir kaydı siler:
Delete ifadesi ile tablodan veri silmek için SQL Delete Kullanımı başlıklı yazıma göz atabilirsin.
Kullanım şekli 1:
$id = 1; // silinecek kaydın id'si $stmt = $dbh->prepare("DELETE FROM mytable WHERE id = :id"); $stmt->bindParam(':id', $id); $stmt->execute();
Bu örnekte, prepare()
yöntemi, SQL sorgusunu hazırlar ve sorguda yer tutucu olarak “:id” kullanır. bindParam()
yöntemi, sorguda yer tutucuya veri bağlar. $id
değişkeni, “:id” yer tutucusuna bağlanır. execute()
yöntemi, sorguyu çalıştırır ve kaydı veritabanından siler.
Kullanım şekli 2:
$id = 1; // silinecek kaydın id'si $stmt = $dbh->prepare("DELETE FROM mytable WHERE id = ?"); $stmt->execute($id);
Veritabanından veri silmek için PDO kullanmanın bir diğer yolu da, query()
yöntemini kullanmaktır. Bu yöntem, doğrudan SQL sorgusu içerir ve yer tutucu kullanılmaz. Aşağıdaki örnek, “mytable” adlı tablodan “name” sütununda “John” olan tüm kayıtları siler:
$stmt = $dbh->query("DELETE FROM mytable WHERE name = 'John'");
Bu örnekte, query()
yöntemi, doğrudan SQL sorgusunu içerir ve sorgu yer tutucu kullanmaz.