
TitanDB, PHP üzerindeki pdo kütüphanesini kullanarak, database işlemlerinin hızlı ve düzenli şekilde yapılmasını sağlayan bir kütüphanedir. Adından da anlaşılacağı üzere Titan Framework'ün yeni versiyonunda da database plugini olarak kullanılacaktır. Mevcut sürüm ile nasıl entegre edileceğini aşağıdaki bağlantıda bulunan yazımda inceleyebilirsiniz;
http://www.turankaratug.com/blog/php/28-titandb-kutuphanesini-titan-framework-ile-kullanma
- TitanDB'yi kullanabilmeniz için sunucunuzdaki PDO eklentilerini kurmanız ve aktif hale getirmeniz gerekir.
- TitanDB, MySQL, PostrgreSQL, SQLite ve Oracle veritabanlarını destekler.
- TitanDB üzerinden pdo kütüphanesinin orjinal methodlarına erişebilirsiniz. Bununla ilgili örnek kullanım aşağıdaki gibidir;
$db->pdo->prepare('SORGU');
Kurulum
Kütüphaneyi composer ile kurmak için aşağıdaki kodu çalıştırmanız yeterlidir;
$ composer require tkaratug/titan-db:dev-master
GitHub
Kütüphaneye Github üzerinde aşağıdaki bağlantıdan ulaşabilirsiniz;
https://github.com/tkaratug/TitanDB
Kullanımı
Kurulumun ardından TitanDB classını aşağıdaki şekilde sayfanıza dahil edin;
require 'vendor/autoload.php';
$config = [
'db_driver' => 'mysql',
'db_host' => 'localhost',
'db_user' => 'kullanici_adi',
'db_pass' => 'sifre',
'db_name' => 'dabase_adı',
'db_charset' => 'utf8',
'db_collation' => 'utf8_general_ci',
'db_prefix' => ''
];
$db = TitanDB::init($config);
Tek Satır Veri Çekme
// İstenilen kolonları seçmek için
$db->select('kolon1, kolon2, ...')
->from('tablo')
->get()
->row();
$db->select('kolon1 as k1, kolon2 as k2, ...')
->from('tablo as t1')
->get()
->row();
// İlgili kayıttaki tüm kolonları seçmek için
$db->get('tablo')->row();
Çoklu Veri Çekme
// İstenilen kolonları seçmek için
$db->select('kolon1, kolon2, ...')
->from('tablo')
->get()
->results();
$db->select('kolon1 as k1, kolon2 as k2, ...')
->from('tablo as t1')
->get()
->results();
// İlgili kayıttaki tüm kolonları seçmek için
$db->get('tablo')->results();
JOIN Kullanımı
// LEFT JOIN kullanarak çoklu veri çekme örneği
$db->select('t1.kolon1, t1.kolon2, t2.kolon3, t2.kolon4')
->from('tablo_1 as t1')
->join('tablo_2 as t2', 't1.id=t2.id', 'left')
->get()
->results();
WHERE Kullanımı
$db->select('kolon1, kolon2')
->from('tablo')
->where('id', 5)
->get()
->row();
$db->select('kolon1, kolon2')
->from('tablo')
->where('id', 5, '>')
->get()
->results();
// AND WHERE
$db->select('ad, soyad')
->from('tablo')
->where('yas', 20, '>')
->where('il', 34)
->get()
->results();
// OR WHERE
$db->select('ad, soyad')
->from('tablo')
->where('yas', 20, '>')
->or_where('dogum_tarihi', 1996, '>')
->get()
->results();
ORDER BY ve LIMIT Kullanımı
$db->select('ad, soyad')
->from('tablo')
->order_by('yas', 'asc')
->limit(20)
->get()
->results();
GROUP BY Kullanımı
$db->select('ad, soyad, kitap, COUNT(*)')
->from('tablo')
->group_by('kitap')
->get()
->results();
HAVING Kullanımı
$db->select('ad, soyad, kitap, COUNT(*) as count')
->from('tablo')
->group_by('kitap')
->having('count', 15, '>')
->get()
->results();
LIKE / NOT LIKE Kullanımı
$db->select('ad, soyad')
->from('tablo')
->like('soyad', '%OĞLU')
->get()
->results();
// OR LIKE Kullanımı
$db->select('ad, soyad')
->from('tablo')
->like('ad', 'AHMET%')
->or_like('ad', 'MEHMET%')
->get()
->results();
// NOT LIKE Kullanımı
$db->select('ad, soyad')
->from('tablo')
->not_like('ad', 'AHMET%')
->get()
->results();
IN / NOT IN Kullanımı
$db->select('ad, soyad')
->from('tablo')
->in('sehir', [9,35,20,48])
->get()
->results();
// NOT IN Kullanımı
$db->select('ad, soyad')
->from('tablo')
->not_in('sehir', [9,35,20,48])
->get()
->results();
INSERT Kullanımı
$veriler = [
'ad' => 'John',
'soyad' => 'Doe',
'sehir' => 34
];
$db->insert('tablo', $veriler);
UPDATE Kullanımı
$veriler = [
'ad' => 'John',
'soyad' => 'Doe',
'sehir' => 34
];
$db->where('id', 15);
$db->update('tablo', $veriler);
DELETE Kullanımı
$db->where('id', 15);
$db->delete('tablo');
LAST INSERT ID
$veriler = [
'ad' => 'John',
'soyad' => 'Doe',
'sehir' => 34
];
$db->insert('tablo', $veriler);
echo $db->insert_id();
Toplam Kayıt Sayısını Bulma
$db->select('*')
->from('tablo')
->where('yas', 20, '>')
->get()
->results();
echo $db->num_rows();
Son Çalıştırılan Sorguyu Bulma
echo $db->last_query();
elinize sağlık Titan Framework Yeni Sürüm ne zamana geliyor görünen oki yeni sürüm bomba gibi olacak :)
Titan Framework "pro" versiyonuyla bir süredir github üzerinde yayında zaten. Fakat geliştirmelerim devam ediyor. Dökümantasyonunu da hazırladıktan sonra stabil sürümü duyuracağım.
https://github.com/tkaratug/titan-proöncelikle elinize sağlık, titan framework de titandb yi kullanabiliyormuyuz ?
Evet kullanabilirsiniz fakat model yapısında ufak bir değişiklik yapmanız gerekir. Bu konuyla ilgili bir makale yazıp yayınlayacağım.
Merhaba OOP yapısını daha iyi anlamak için mvc yerine kendim bir yapı oluşturmaya çalışıyorum. Projemde composer kullanmaya karar verdim. Ve yine projemde sizin titandb kütüphanesini kullanmaya karar verdim.Ancak composer bir hata verdi ve autoload.phpyi oluşturmadı.Sorun sizin kütüphanenizle alakalı değil ama yardımcı olursanız sevinirim. Konsol çıktısının rahat okunması için aşağıdaki linke ekledim. https://paste.ubuntu.com/24366884/
composer.json dosyasında classmapi tanımlarken bir hata yapmışım. Bir arkadaşın uyarısıyla az önce düzelttim. Şu anda hata almamanız gerekiyor.
Merhabalar, kütüphanenizi projemde kullanıyorum. Birden fazla tablodan veri çekiyorum -join kullanmadan. Sql sorgumu kütüphandeki and where kullanım biçimi ile kullanmaya çalıştım ancak beceremedim. Pdo'mun metodlarını kullanayım dedim hata verdi. Yazdığım kodlar ve orijinal sql sorgumu linkte paylaştım yardımcı olabilir misiniz? Kodlar https://paste.ubuntu.com/24507923/
PDO kütüphanesinin kendi methodlarına erişim ile ilgili bir düzenleme yapmıştım. TitanMVC 'ye eklemişim fakat kütüphaneye eklemeyi unutmuşum. Şimdi gerekli düzenlemeyi github'a commit ettim. Bu şekilde sorununuz çözülecektir.
Merhaba ilgin için teşekkür ederim. Peki sorgumu pdo methodlarını kullanmadan kütüphanenin metotları ile kullanma imkanım var mı? Varsa nasıl acaba?
Merhaba composer update komutunu verdim paketi güncelledim. Hata devam etti bu defa elle kodları yükledim ama yine hata veriyor. Yardımcı olur musunuz?https://paste.ubuntu.com/24513302/
Kütüphanenin methodları ile deneyip sql cümleciğini ekrana bastırmayı dener misiniz? Cümle doğru oluşuyor mu önce onu tespit edelim. Aldığınız hata ile ilgili olarak son eklediğim pdo methodunun ismini değiştirip dener misiniz? Değişken olan pdo ile karışıyor sanırım. Değişken private yapıda olduğu için erişim hatası veriyor olabilir.
Merhaba öncelikle ilgi ve sabrınız için teşekkür ederim. Kütüphanenin metodlarını deneyip sorguyu ekrana bastırdım. WHERE kullanımlarında eşittir işaretinden sonraki ifadeyi tek tırnak içerisine aldığı için (Örnek: WHERE yazilar.yazarID='yazarlar.id' ) sorgu sonuç döndürmüyor. Diğer bir hususta pdo metordlarına erişim ile ilgiliydi. Sınıf içerisindeki pdo method ismini pdoerisim şeklinde değiştirdim. Ancak hata almaya devam ediyorum. Hata şu şekilde https://paste.ubuntu.com/24519419/
pdoerisim methodunu aşağıdaki linkte gördüğünüz gibi güncelleyiniz. Kullanım örneğindeki gibi uyguladığınızda sorun çıkmayacak zannediyorum.
https://paste.ubuntu.com/24535590/
Teşekkür ederim sorunsuz çalıştı.
Merhabalar bir form aracılığı ile gelen verileri veritabanı eklemeye çalışıyorum. Veriler arasında bir de tarih alanı bulunuyor. tarih alanına bir şey girmezsem null değer alıyor. veritabanında alanın özelliğini varsayılan olarak null ve boş değer kabul edebilir şekilde ayarladım. Verileri titana yolluyorum ama veritabanına ekleme yapmıyor. sanırım bu kısımda bir hata var ya da ben kullanamadım. Kod bloğum şu şekilde https://paste.laravel.io/fc55aed8-6786-4d21-9062-16bfee7e65a5 form post ettiğimdeki var_dump da şu şekilde https://paste.laravel.io/dc00ec41-a6ce-4dd1-9a92-2e99c289e73c
@Ömer Faruk, yayından kaldırılma tarihi değişkenini tanımladığınız koşulu aşağıdaki ile değiştirip dener misiniz? Ayrıca ilgili kolonun date formatından olduğundan ve kaydedilmek istenen verinin de uygun date formatında olduğundan emin olunuz.
$yayindan_kaldirilma_tarihi = (isset($_POST['yayindan_kaldirilma_tarihi']) ? ($_POST['yayindan_kaldirilma_tarihi'] != '' ? $_POST['yayindan_kaldirilma_tarihi'] : NULL) : NULL);
Merhaba yorum için teşekkürler. Veritabanında date alanını yyyy-mm-dd formatında kullanıyorum. Verileride bu şekilde post ediyorum. Tarih değeri girdiğimde insert ediyor fakat değer girmediğimde null değer gittiğinde hata veriyor ve insert etmiyor. Bu sınıfta hatayı nasıl ekrana basıyoruz. Belki detaylı hata bilgisi alırsak çözüme daha çabuk ulaşırız.
$db->error();
methodu ile hatalara erişebilirsiniz.yazıları db ye insert ediyorum. Alanlardan birisi yazının yayınlanma tarihi. Eğer tarih girilmişse o tarihte yazının yayından kaldırılaması için tarihi girilmemişse veritabanına NULL değerini insert ediyorum.Tarih seçtiğimde insert işlemini başarılı bir şekilde gerçekleştiriyorum. Ama tarih girmemişsem insert yapmıyor.db->error() methodunu kullandışımda ürettiği çıktı ekran görüntüsünde olduğu gbi.sorguya null değerini atamamış görünüyor. https://i.hizliresim.com/bBVEqG.png