BasicDB ile Kolay Veritabanı İşlemleri

1 yıl kadar önce size şu dersimde pdo kullanımını anlatmıştım.
Ancak gerek uzman cevap’ta gerekse gelen maillerde pdo kullanımında sıkıntı yaşıyan arkadaşlar olmuş.
Uzun bir süre önce bende kendi işlerimde kullanmak için pdo’ya ait BasicDB adında bir alt sınıf hazırladım.
Bu sayede veritabanı işlemlerimi daha kolay ve anlaşılır yapabiliyorum.
Sizlere de bu videomda bu sınıfın kullanımını örneklerle anlatacağım.

BasicDB Github Sayfası;
https://github.com/tayfunerbilen/BasicDB

Veritabanı Bağlantısı

$db = new BasicDB('host', 'vtadı', 'kadı', 'şifre');

Veri Ekleme Örneği

$query = $db->insert('uyeler')
            ->set(array(
                 'uye_adi' => 'test',
                 'uye_sifre' => 123456,
                 'uye_eposta' => '[email protected]'
            ));
   
if ( $query ){
  echo 'Last Insert Id: '.$db->lastId();
}

Veri Güncelleme Örneği

$query = $db->update('uyeler')
            ->where('uye_id', 2)
            ->set(array(
                 'uye_adi' => 'başka ad'
            ));
   
if ( $query ){
  echo 'uye guncellendi.';
}

Veri Silme Örneği

$query = $db->delete('uyeler')
            ->where('uye_id', 2)
            ->done();
   
if ( $query ){
  echo 'veri silindi.';
}

Veri Listeleme Örneği

// select
$query = $db->from('icerikler')
            ->join('uyeler', '%s.uye_id = %s.icerik_uye_id', 'left')
            ->where('icerik_onay', 1)
            ->or_where('icerik_onay', 2)
            ->orderby('icerik_id', 'desc')
            ->groupby('icerik_uye_id')
            ->limit(0, 10)
            ->all();
   
if ( $query ){
  foreach ( $query as $row ){
    print_r($row);
  }
}

Tekli Veri Listeleme Örneği

$row = $db->from(‘icerikler’) ->where(‘icerik_id’, 5) ->first(); print_r($row);

Sayfalama Örneği

// toplam veri
$totalRecord = $db->from('users')
                  ->select('count(user_id) as total')
                  ->total();

// sayfa başına kaç veri gözükecek?
$pageLimit = 4;

// sayfa parametresi? Örn: index.php?page=2 [page = $pageParam]
$pageParam = 'page';

// limit için start ve limit değerleri hesaplanıyor
$pagination = $db->pagination($totalRecord, $pageLimit, $pageParam);

// normal sorgumuz
$query = $db->from('uyeler')
            ->orderby('uye_id', 'DESC')
            ->limit($pagination['start'], $pagination['limit'])
            ->all();
            
print_r($query);

// sayfalamayı yazdır
echo $db->showPagination('http://localhost/test/?'.$pageParam.'=[page]');

“BasicDB ile Kolay Veritabanı İşlemleri” için 8 yorum

  1. Merhabalar,

    Birden fazla kolonda like işlemi yapmak için nasıl bir yol izleyebilirim. Yardımcı olursanız sevinirim.

    1. Şunu deneyebilirsin;

      $db->from('tablo_adi')
      ->where('kolon1', 'değer', 'LIKE')
      ->or_where('kolon2', 'değer', 'LIKE')
      ->or_where('kolon3', 'değer', 'LIKE')
      ->all();
  2. Peki işin içine bir formdan gelen veri olursa aldığımız değeri değişkene atip mı deniceğiz

    1. Şu şekilde deneyebilirsin;

      $query = $db->from('tablo_adi');
      if ($q = $_GET['q']){
          $query = $q->like('kolon', $q);
      }
      $query = $db->orderBy('id', 'DESC')
      all();
  3. Like sadece tek bir kelime kiyaslanirsa doğru sonuç veriyor. Soundex kullandım bu da çok uzak alternatif sonuçları da listeliyor.
    formdan gelen verim tek kelimede olabilir birden fazla kelimede. Bunu bilemiyoruz tabi.
    Bu durumda where ve or_where secenegini kullanmaliyiz like ile elbette ama ben aranacak verinin kaç kelime olduğunu bilmedigimden kodu uzatmadan tek seferde bunu nasıl saglayabilirim.
    aklima gelen yöntem gelen veriyi explode ile parcalayip count ile sayip sonuc 1 ise düz bir like, sonuç 2 ise where ve or_where ile like, sonuç ikiden büyükse ? bir döngü kurmam gerek bana bunu yazabilir misiniz? Son cümlede yani sonuç 2 den büyükse kısmında takılıyorum.

Bir cevap yazın

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