Php PDO Kullanımı

Değerli dostlarım merhabalar, Php Data Object kısaltılmışı. PDO desteklediği veritabanları için ortak metod ve özellikleri barındıran bir OOP sınıfıdır. Ayrıca PDO sınıfı ile Sql injection gibi istenmeyen durumlar için de çözüm sunar. PDO konusunu kısa ve belirli başlıklar altında topladım.

PDO Kurulumu mu?

Yapmamız gereken ilk iş web server ımızda PDO eklentisinin olup olmadığını öğrenmektir. Bunun için aşağıdaki kodu çalıştırmak yeterli olacaktır.

if (extension_loaded("PDO")) {
    echo "PDO kurulu.";
} else {
    echo "PDO kurulu değil.";
}

Eğer PDO kurulu ise işlemimize veritabanımıza bağlanarak devam edelim.

PDO Veritabanı Bağlantısı

Bağlanmanın birden fazlada ayarları bulunmakta bunların çoğunu es geçiyorum ve işimize yarayacak olan kodu direkt veriyorum.

$host = 'localhost';
$user = 'root';
$pass = '';
$dbnm = 'test';

try {
  $db = new PDO("mysql:host=$host;dbname=$dbnm", $user, $pass,array(
     PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
     PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
  ));
} catch ( PDOException $e ){
     print $e->getMessage();
}

//$db = null;

Yukarıda yer alan 4 değişken MySql sunucu ve veritabanı bilgileri içindir. Gerekli değişiklikleri yaptıktan sonra bağlantımız açılacaktır. Eğer bir hata var ise Exception’a düşüp hatayı bize gösterecektir. Alt tarafta pasif olan $db = null; kodunu veritabanımız ile işlemimiz bittikten sonra bağlantıyı sonlandıracağımız koddur.

PDO Veri Ekleme

Veritabanı bağlantımızı yaptık, şimdi PDO ile tablomuza veri ekleyelim. Bunun birden fazla metodu var ama ben prepare() metodunu kullanmayı tercih ediyorum. Örnek kodlarımız aşağıdadır.

$query = $db->prepare("INSERT INTO TBLUYELER SET ADI = ?, SOYADI = ? ");
$insert = $query->execute(array('Hüseyin', 'Yaman'));

if ( $insert ){
  $id = $db->lastInsertId();
  echo "Kayıt Başarılı, Kayıt id: $id";
}

$db = null;

Yukarıdaki örneğimizde eğer sistemde bir sorun çıkmaz ise kayıt başarılı olacak ve ekranımıza Kayıt Başarılı mesajını döndürecektir. Ardından $db = null; ile veritabanı bağlantımızı kapatıyoruz.

Burada en önemli konu Sql ınjection. Eğer Sql Injection gibi sorunlar ile karşılaşmak istemiyorsak bindparam kullanmamız gerekecek. Aşapıdaki kodu inceleyelim.

$query = $db->prepare("INSERT INTO TBLUYELER (ADI,SOYADI,IL) 
VALUES (:nam, :add, :cit)");
$stmt->bindParam(':nam', $txtNam);
$stmt->bindParam(':add', $txtAdd);
$stmt->bindParam(':cit', $txtCit);
$stmt->execute();

Yukarıda kod ile veritabanımıza en güvenli şekilde veri ekleyebiliriz.

PDO Veri Listeleme

Şimdi PDO ile verilerimizi veritabanına kaydettikten sonra listeleme işlemine geçelim. Kodlarımız aşağıdaki gibidir.

$query = $db->query("SELECT * FROM TBLUYELER", PDO::FETCH_ASSOC);
if ( $query->rowCount() ){
   foreach( $query as $row ){
      echo $row['ADI']." ".$row['ID']."<br />";
   }
}

Yukarıdaki kodlarımızda rowCount() metodu ile geriye dönen kayıt sayısını elde ediyoruz. Eğer kayıt sayısı 0 dan büyük ise elimizde kayıt var demektir ve listeleme işlemi başlar. Eğer elimizde Kayıt yok ise else durumu eklenir ve kayıt mesajı verdirilebilir.

PDO Veri Listeleme ( Koşullu )

tablodaki kayıtları listelerken filtreleme yapmak, where koşulu ekleyerek koşul ekleyebiliriz. Aşağıdaki kodu inceleyelim.

$id = '5';
$query = $db->query("SELECT * FROM TBLUYELER WHERE ID = '{$id}'")->fetch();
if ( $query ){
    echo $query['SOYADI'];
}

Yukarıda tablomuzda yer alan sadece ID değeri 5 olan kaydımızı çektik. Eğer böyle bir kayıt var ise geriye true dönecek ve verimiz listelenecektir.

PDO Veri Güncelleme

PDO da veri güncellemek veri eklemek kadar basit. İlgili ID değerinizi ve güncellenecek stunları yollarız. Aşağıdaki kodları inceleyelim.

$id = '5';
$query = $db->prepare("UPDATE TBLUYELER SET ADI = :ADI WHERE ID = :ID");
$update = $query->execute(array("ADI" => "Hüseyin Yaman", "ID" => $id));

if ( $update ){
   echo "Güncelleme Başarılı!";
}

Güncelleme işlemi başarılı olduğunda geriye true dönecektir ve ekranımıza Güncelleme başarılı şeklinde yazacaktır.

PDO Veri Silme

Oldukça basittir. Aşağıda yer alan kodlarımızı inceleyelim.

$id = '5';
$query = $db->prepare("DELETE FROM TBLUYELER WHERE ID = :id");
$delete = $query->execute(array('id' => $id));

if( $delete ){
   echo ' kayıt silme başarılı ';
}

Yukarıdaki kodumuzda TBLUYELER tablosunda ID değeri 5 olan kaydımızı sildik. Eğer silme işlemi başarılı oldu ise geriye true dönecek ve ekranımıza kayıt silme başarılı şeklinde yazacaktır.

Sql Query Kullanımı

Özel Sql komutları yazmak için kullanılır. Aşağıda yer alan örneği inceleyelim.

$sorgu = $db->query("ÖZEL SQL KODUMUZ");

if($sorgu->rowCount() > 1) { 
  echo "işlem başarılı";
}

PDO Veritabanı Sonlandırma

Veritabanı işlemlerimiz bittikten sonra veritabanı ile bağlantıyı sonlandırmak için yapmamız gereken şey bağlantımıza null değeri vermek. Aşağıdaki örnek kodumuzu inceleyelim.

$db = null;

PDO Kullanımı

query() , prepare() ve exec()

Veritabanı Sql işlemleri için bu metodları kullanılır. Yanlız exec() ve query() metodları Sql injection’lara karşı savunmasızdır. tavsiyem prepare() metodunu kullanmanızdır.

$db = null;

Veritabanı ile işlemlerimizi hallettik bağlantımızı kapatmak için kullanılan koddur. Sql işlem sonrasına bu kodu yazdığımızda veritabanı ile bağlantımız kesilecektir.

lastinsertid()

Veritabanımıza veri eklendiğinde eklenen verinin id değerini öğrenmek isteyebiliriz. Geriye id şeklinde değer döndürür.

rowCount()

Veritabanımızda bir işlem yaptık diyelim Select , İnsert , Update, Delete farketmez. İşlem sonucunda etkilenen satır sayısını bulmak için PDO sınıfımızın içerisinde yer alan rowCount() metodunuz kullanırız.

errorCode() ve errorInfo()

Bir Sql kodu yazdık ve çalışmadı geriye hatalar döndü. Bu hataların neler olduğunu bu iki method yardımı ile öğrenebiliriz. Aşağıdaki örnek kodu inceleyelim ve anlayalım.

id( $db->errorCode() != null ){
   $hata = $db->errorInfo();
   $hata = $baglanti->errorInfo();

   die("Hata Kodu: " . $hata[0] .
       "<br /> Hata No: " . $hata[1] .
       "<br /> Hata açıklama: " . $hata[2]);
}

Yukarıdaki örnekte görüldüğü gibi hata aldığımız da hata kodu, numarası ve açıklamasını işlemi die() ile öldürüp bize değer gönderecektir.

Herkese kolay gelsin. Diğer bir dersimizde görüşmek üzere.

10 yorum “Php PDO Kullanımı

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Shares