Bu konuda PHP ile veritabanı bağlantısı yaparken kullandığımız PDO (PHP Data Objects)'i inceleyeceğiz. PDO ile MySQL veritabanımıza bağlanma, veritabanımızdan veri çekme, veri ekleme, güncelleme, silme gibi bir takım olayları inceleyeceğiz. Çok fazla detaya girmeden doğrudan kodları yayınlayacağım ve kaynak olabilmesi açısından el altında kalmasını istediğim bir sayfa olacaktır.
PDO Nedir?
PDO, hafif ve tutarlı bir arayüzdür. PHP ile veritabanlarımıza erişirken yardımcımız olan ve desteklediği onlarca veritabanı sürücüsü ve kullanım kolaylığı ile tercih edilmektedir.
PDO ile Neler Yapabiliriz?
- Veritabanı Bağlantısı
- Veritabanındaki Verileri Listelemek
- Veritabanına Veri Eklemek
- Veritabanındaki Veriyi Güncellemek
- Veritabanındaki Veriyi Silmek
(Yukarıda yer alan herhangi bir liste elemanına tıklayarak sayfamızda doğrudan o bölüme gidebilirsiniz.)
Veritabanı Bağlantısı
$database = new PDO("mysql:host=localhost;dbname=veritabaniAdi;charset=utf8", "kullaniciAdi", "parola");
} catch ( PDOException $e ){
print $e->getMessage();
}
Yukarıdaki yapımızda ;charset=utf8 kısmını kullanmak zorunda değildik. Fakat karakter setleri her zaman başımıza dert olduğundan bu ufak kod parçasını eklemekte fayda görüyorum. Bunun yanında dilersek farklı bir şekilde bu yapıdan ayrı olarak şöyle bir kullanımını da gerçekleştirebilirdik;
Veritabanındaki Verileri Listelemek
foreach($yazilar as $yazi){
echo $yazi["baslik"];
}
Bu kod yardımı ile veritabanı bağlantısını yaptıktan sonra veritabanımızda yer alan yazılar tablomuzu çekmiş olduk (Veritabanı bağlantısını yaparken $db adında bir değişken oluşturmuş ve bu değişken üzerinden bağlantı yapmıştık. Bu sebeple yukarıdaki yapımızda da $db değişkenini kullandık). Verileri $yazilar adında bir değişkene atadık. Bu değişkenimiz dizi olarak tanımlandığından PHP Foreach yardımı ile gelen verilerimizi tek tek döndürerek her veriyi $yazi değişkenine atadık ve $yazi["baslik"] methodumuz ile de yazilar veritabanında yer alan baslik sütunundan verimizi çekmiş olduk.
Veritabanına Veri Eklemek
baslik = ?,
icerik = ?
");
$ekle = $sorgu->execute(array(
"Yazı Başlığı",
"Yazı İçeriği"
));
if ($ekle){
$last_id = $db->lastInsertId();
echo "Yeni yazı eklendi!";
}
Yukarıda yer alan kod blogumuz incelendiğinde gözlemliyoruz ki verileri birbiri ile eşleştiriyoruz. Yani birinci sıradaki yer alan verimiz $ekle parametresi içerisinde yine birinci sırada yer alıyor. Bu sıranın sebebi ise kullanılan soru işaretleridir. Eğer sıra farketmeksizin kodlarımızı oluşturmak istiyorsak mutlaka bir anahtar kelime belirlemeliyiz;
baslik = :yaziBasligi,
icerik = :yaziIcerigi
");
$ekle = $sorgu->execute(array(
"yaziBasligi" => "Yazı Başlığı",
"yaziIcerigi" => "Yazı İçeriği",
));
if ($ekle){
$last_id = $db->lastInsertId();
echo "Yeni yazı eklendi!";
}
Veritabanındaki Veriyi Güncellemek
Veri ekleme işlemi ile aynıdır. Sadece kullanılan INSERT INTO yerine UPDATE kullanılır. Ayrıca $ekle methodu çalıştığında son id'yi almaya ve işleme dahil etmeye gerek yoktur. Yine aynı şekilde bir anahtar belirtilerekte yapılabilir;
baslik = :yaziBasligi,
icerik = :yaziIcerigi
");
$guncelle = $sorgu->execute(array(
"yaziBasligi" => "Yazı Başlığı",
"yaziIcerigi" => "Yazı İçeriği",
));
if ($guncelle){
echo "Yeni yazı eklendi!";
}
Veritabanındaki Veriyi Silmek
Tüm Verileri Silmek
echo 'Silinen Satır: '.$sil;
Tek Bir Veriyi Silmek
$sil = $yazilar->execute(array(
'id' => 3
));
Veritabanımızdaki yazilar tablomuzda yer alan ve id'si 3 olan veriyi sildik.