Sercan Çepni

PDO Class İle Veri Kontrolü

Bugün sizlere çok güzel bir PDO Class anlatacağım arkadaşlar. Bu class sayesinde çok daha hızlı veri tabanı işlemleri yapabilirsiniz bende yazdığım sitelerde bu class kullanıyorum ve fazladan kod yazmam gerek kalmıyor.
Bu class Yılmaz Demir Arkadaşım yapmıştır. Öncelikle ona çok teşekkür ediyorum.
Github Adresi : https://github.com/yidemir/Pratik-PDO
Öncelikle Yukarıdaki adresten PDO Class sınıfını indirelim.

Kullanımı

Veri tabanın da ki tablolarla çalışırken en çok yaptığımız işlemler CRUD (yani veri ekleme, okuma, güncelleme ve silme) işlemleridir. Bunu baz alarak yazılan bu sınıf sayesinde veri çekme/okuma, ekleme, silme, düzenleme işlemlerini kolayca yapabiliyoruz.
Veri tabanın dan gelen veri; dizi (array) olarak değil, obje (object) olarak dönmektedir. Örneğin $post['title'] yerine $post->title olarak kullanmanız gerekiyor.
Not: Object Döndürdüğü için mysql tablo yapısında isimler sayısal isimler olmamamı yani Tabloda 205×205 diye bir isim atadıysanız çalışmaz Bu isim yerine haberresim205x205 olsun 🙂

Bağlantı Kurma ve Ayarlar

$db = new Database('localhost', 'Veritabanı adı', 'Kullanıcı adı', 'Şifre');

Ben genelde bağlantı kurmak için yukardaki kodu kendime göre değiştirip database.class.php dosyasının en alt satırına yazıyorum.

Tekil Veri Çekme (getOne)

Bir satır veri çekmek için kullanılan kod :

$yazi = Database::getOne('haber', 'WHERE created = ?', array('2015-04-15 12:24:14'));
echo $yazi->baslik;

Diğer Örnekler ;
İd ile Gelen tekil veri çekme ;

$id = $_GET['id'];
$ilan2 = Database::getOne('isilanlari', 'WHERE id=?', array($id));
echo $ilan2 ->ilanno;

Tekil Veri Çekme (execOne)

Bir satır veri çekmek için ya da sorgu çalıştırmak için kullanılır;

$post = Database::execOne('SELECT * FROM post WHERE created = ?', array('2015-04-15 12:24:14'));
echo $post->title;

Tekil Veri Çekme (getId)

ID’ye göre tek satır veri çekmek için kullanılır;

$kategori = Database::getId('haberkat', 5);
echo $kategori->name;

Çoklu Veri Çekme (getAll)

Şart ve parametlere göre veritabanından çoklu veri çeker;

$posts = Database::getAll('post', 'WHERE draft = ?', array(0));
foreach ($posts as $post) {
  echo $post->title . '<br>';
}

Çoklu Veri Çekme (execAll)

Şart ve parametlere göre veritabanından SQL kodları ile çoklu veri çeker;

$posts = Database::execAll('SELECT * FROM post WHERE draft = ?', array(0));
foreach ($posts as $post) {
  echo $post->title . '<br>';
}

Veri Ekleme

Tabloya kolayca veri eklememizi sağlar ;

$insert = Database::insert('post', array(
  'title' => $_POST['title'],
  'body' => $_POST['body'],
  'draft' => 0
));
echo $insert ? $insert . ' numaralı gönderi eklendi' : 'Gönderi eklenemedi';

Veri Güncelleme

Eğer veritbanındaki belirli ID’ye ait satırı güncellemek istersek;

$update = Database::update('post', 5, array(
  'title' => 'Yeni gönderi başlığı',
  'body' => 'Düzenlenen yeni gönderi içeriği',
  'draft' => 0
));
echo $update ? 'Gönderi başarıyla güncellendi' : 'Gönderi güncellenemedi';

Eğer ID olmadan farklı şart ve parametrelere göre güncellemek istersek şöyle kullanıyoruz;

$update = Database::update('post', 0, array(
  'title' => 'Yeni gönderi başlığı',
  'body' => 'Düzenlenen yeni gönderi içeriği',
  'draft' => 0
), 'WHERE title = ?', array('Eski gönderi başlığı'));
echo $update ? 'Gönderi başarıyla güncellendi' : 'Gönderi güncellenemedi';

Veri Silme

Güncelleme ile aynı şekilde sadece ID’ye göre silmek için ;

$delete = Database::delete('post', 5);
echo $delete ? 'Gönderi başarıyla silindi' : 'Gönderi silinemedi';

ID olmadan, farklı şart ve parametrelerle silme işlemi yapmak istersek şu şekilde kullanıyoruz;

$delete = Database::delete('post', 0, 'WHERE title = ?', array('Silinmelik gönderi'));
echo $delete ? 'Gönderi başarıyla silindi' : 'Gönderi silinemedi';

Toplam Satır Sayısı Alma

Genel de en çok sayfalama için toplam satır sayısı alnırı ;

$count = Database::count('post');
echo $count ? 'Toplam ' . $count . ' gönderi mevcut' : 'Henüz hiç gönderi yok';

Veya

$count = Database::count('post', 'WHERE draft = ?', array(0));
echo $count ? 'Toplam ' . $count . ' yayımda olan gönderi mevcut' : 'Henüz hiç yayımlanmış gönderi yok';

veya SQL sorgusunu manuel yazmak gerekirse execCount() methodunu kullanabiliriz ;

$count = Database::execCount('SELECT * FROM post WHERE draft = ?', array(1));
echo $count ? 'Toplam ' . $count . ' taslak olan gönderi mevcut' : 'Hiç taslak gönderi yok';
Exit mobile version