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' => 'test@mail.com'
            ));
   
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)
            ->run();
   
if ( $query ){
  foreach ( $query as $row ){
    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'])
            ->run();
print_r($query);

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

Yayınlayan

Tayfun Erbilen

2009'dan beri web işleriyle uğraşan, aynı zamanda amatör müziklede ilgilenen sıradan birisi..

“BasicDB ile Kolay Veritabanı İşlemleri” üzerine 38 yorum

  1. Sınıf ve anlatım için teşekkürler.Uzun süredir yeni makale gelmiyordu iyi geldi bunlar 🙂

  2. Güzel bir sınıf 🙂 hocam sizden daha çok oop üzerinde anlatım yapmanızı bekliyoruz 😀 yani bize balık vermeyin balık tutmayı öğretin hesabı 😀

  3. Valla bu adam sayesinde, PHPyi öğrendim ve veritabana bağlanmak içinde güzel bir sınıf olmuş :)) ellerine sağlık abi,ALLAH RAZI OLSUN.sayende çok şey öğrendik,öğreniyoruz.

  4. Merhaba,
    public function join diye fonsiyon var join PHP`de reserve olunmuş isim değilmi? böyle kullanmak sorun çıkarmaz mı?

  5. $query = $db->select(‘settings’)
    ->where(‘id’, 1)
    ->run();

    $count = $query->rowCount();

    Şeklinde kullandığımda çalışmıyor. Ben mi yanlış yapıyorum yoksa bu özellik çalışmıyor mu?

  6. @İbrahim Telman , eğer toplamı bulmak istiyorsan şu şekilde yapman gerek;

    $totalRecord = $db->select('settings')
                      ->from('count(id) as total')
                      ->where('id', 1)
                      ->total();
    echo $totalRecord;
  7. @Tayfun Erbilen Evet bu şekilde kullanım işimi görür. Teşekkürler bu arada güzel bir class olmuş.

  8. Merhaba, öncelikle elinize sağlık ama bence PDO yapısının en büyük avantajı farklı veritabanları ile aynı standarta çalışabilmek.
    Sizin ki sadece Mysql için kullanılabilir bir yapı, bu durumda neden PDO alt yapısını kullanıyorsunuz ?

  9. @Aıkan Aydin, en başta php artık mysql_ li fonksiyonları declare ettiği için. Ek olarak zaten sınıfın adı da basic db, yani basit veritabanı işlemleri için hazırlandı. Ben projelerimde sadece mysql kullandığım için bana yeterli oluyor. Videoda da bahsettiğim gibi bu ve bunun gibi sınıfların kullanımının öneminden bahsettim, yorumun için teşekkürler 🙂

  10. tayfun kardeşim eğitim videoları için teşekkür ederim sayende web programlama ilgili bişeyler öğreniyoruz.

  11. Eline sağlık, on numara olmuş. Belki saçma gelecek ama takıldığım nokta şu. neden basicdb classını başlatırken içine veritabanı bağlantısı giriyoruz. config olsa ordan sadece bir kere yapsakta herhangi bir yerde basicdb classını başlatırken direk $db = new BasicDB; yapsak?

  12. @Fırat KAYAR, zaten bir kez başlatıyorsun veritabanı bağlantısını. Bir daha veritabanı işlemi için $db değişkenini kullanarak yapıyorsun, anlayamadığın noktayı ben anlayamadım 😀

  13. Üstadım emeğine sağlık biz yeni başlayanlar için süper bir ders bu konuya birde matematik işlemleri ekleye bilirseniz süper olur.

  14. Tayfun kardeş koşul kısmı çok sade olmuş gibi geldi.

    $query = $db->update(‘uyeler’)
    ->where(‘uye_id’, 2)
    ->set(array(
    ‘uye_adi’ => ‘başka ad’
    ));

    Biz burada <= kullanmak istersek, || (veya), kullanmak istersek, neler olacak, bunlar içinde parametre hazırlanması gerekmiyor mu ?

  15. @Sinan, where metodunun 3. parametresinde =, !=, LIKE, IN gibi değerler belirleyebilirsin. Ayrıca or kullanmak içinde or_where() metodu mevcut.

  16. Merhaba hocam, bu olayı çok sevdim aslında. Bunu geliştirmeni öneririm. Hani çok geliştirmene gerek yok. Önce bi documentation, sonra da eksik olan ve yapılacak şeyleri bir changelog halinde github’a atman yeterli bence.

  17. Bu class için öncelikle teşekkür ediyorum ve kullanmaya başladım.
    groupby ve orderby aynı anda kullandığımda fetchAll(); hatası alıyorum.
    Uzmancevap.org’a da yazdım fakat çözüm bulamadım.
    İkisinden birini çıkarttığımda sorgu çalışıyor.

  18. @Emrullah, evet class’da bir sorun vardı. Github sayfasında class’ı güncelledim. Yenisini kullanırsan sorunsuz çalıştırabilirsin.

  19. Çok başarılı dostum, ellerine sağlık. İlk fırsatta inceleyeceğim, anlatımı kolay.

    PHP’de basic düzeyde biri, bunu çok rahatlıkla kavrayabilir. Hayat boyu insert, update querylerine ihtiyaç duymadan yaşayabilir.

  20. Tayfun Bey,

    Bazen video izlemek gerekiyormuş. Videoda aradığım sorunun cevabını buldum. Teşekkürler 😀

  21. Ben bu sınıfı seviyorum ve kullanıyorum kendi geliştirdiğim frameworkede entegre ettim teşekürler Tayfun 🙂 Ama küçük bir hatırlatma yapmak isterim bu dökümde olmayan küçük bir detay var sınıfta where kullanırken Run(); kullanmak nesnelerin tamamını seçmemizi sağlarken Run(true); kullanmak yalnızca where koşuluna uyan bir nesneyi seçmemizi sağlıyor. Run(true); hakkında bir bilgilendirme yapmamışsınız ben sınıfınızın eksik olduğunu sanıyordum sınıfı inceleyerek keşfettim açıklamalardada belirtilmemiş. Bence önemli bir nokta ve dökümde belirtilmeli!

  22. Hocam elinize sağlık. Bir sorum olacaktı. Diyelim ki aynı kullanıcı ismi ile kayıt olmaya çalıştılar. Bunu bu sınıf ile nasıl engelleyebiliriz ? Şimdiden teşekkür ederim.

  23. @Muhsin, şu şekilde;

    $uye_link = 'tayfunerbilen';
    $query = $db->select('uyeler')
      ->where('uye_link', $uye_link)
      ->run(true);
    
    if ( $query ){
      echo 'Bu kullanıcı adı kullanılıyor, başka bir tane deneyin!';
    } else {
      echo 'sorun yok, devam :)';
    }
  24. Videodaki IN kullanımına girmiyorsunuz 🙂 ama orası hatalı değil.

    $li = $db->select(‘urunler’)
    ->where(‘id’,’6,7,8′,’IN’)
    ->run();

    Böyle kullandığımda çalıştı 🙂

  25. Kardeşim güzel bilgiler ve bunun sayesinde hızlı bir şekilde birçok proje teslim ettim.
    sormak istediğim ince bi konu var.

    atıyorum benim Veritabanı Tablo adım = “xyzt”

    bu tabloda $db->select(“xyzt”)
    ->where(“status”, “false”)


    ->run();

    gibi bir sorgu gerçekleştiriyorum.

    bu where alanını dinamik bir şekilde nasıl kullanırım?
    örneğin array ile sorgulamak istediğim alanları listeledim
    $array = (“status” => false, “list_x” => 5, “globalname” => “oxp”);

    bu dizedeki “key” lere göre where işlemini nasıl gerçekleştirebilirim?

    Yardımın için şimdiden teşekkür ederim 🙂

  26. @Erdem AKBULUT, örnek olarak şu şekilde kullanabilirsiniz 🙂

    $array = ("status" => false, "list_x" => 5, "globalname" => "oxp");
    
    $query = $db->select("xyzt");
    foreach($array as $key => $val){
    	$query = $db->where($key, $val);
    }
    
    $query = $db->run();
  27. Merhaba Tayfun, “PHP ile Sıfırdan Proje Oluşturmak 1 ve 2 ” makalelerini inceleyerek videolarına göz atmıştım. Öncelikle oluşturduğun güzel dizin sistemi için eline sağlık ve teşekkür ederim. php_altyapi.zip dosyasını örnek verecek olursam, controller içinde basicdb functionları ile $db->select(‘tablo_adi) şeklinde sorgu çalıştırabiliyorum ancak. classes dizinimdeki class dosyalarımında hiç bir şekilde basicdb funcitonları ve kolay db sorgularını kullanamıyorum. class içindeki public static function içinde tekrar db bağlantısı yaparsam şu şekilde $basicdb = new basicdb(‘localhost’, ‘benimuzm_database’, ‘benimuzm_user’, ‘ORC_r$FdMRcV’); sonra sorguları çalıştırabiliyorum. Bu şekilde sağlıksız oluyor. Controller da sql çağırıp view de class çağırırken sql den gelen arrayi classa gönderebiliyorum ancak orada yeni bir sorgu yapmam gerekince classın içinde kalıyorum. Çözüm nedir yardımcı olabilir misin?

  28. Merhaba Tayfun, sistem çok kullanışlı ve tüm projelerimde kullanıyorum. sormak istediğim veritabanından rastgele bir veriyi nasıl çekebileceğimiz. Yani bu sistemde rand() fonksiyonunu nerede ve nasıl kullanabiliriz. küçük bir örnek yazabilir misiniz?

Bir Cevap Yazın

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