PDOx - Kullanışlı PDO Sınıfı #php

24 Eylül 2015 Perşembe, 17:03 sularında İzni Burak Demirtaş tarafından #php konularında yazılmış.
Yazıldığından bu yana, 15822 kez okunmuş ve 66 yorum almış.

Merhabalar,

Uzun zamandır PHP kategorisinde bir şeyler paylaşmıyordum. Bu suskunluğu güzel ve faydalı bir sınıf yazarak bozmak istedim. 

PHP.net üzerinden yapılan bir açıklamaya göre, bir süre önce PHP artık mysql_* fonksiyonları için destek vermeyeceğini ve mysql_* fonksiyonlarının ömrünü doldurduğunu söylemişti. Bundan sonra mysql_* fonksiyonlarının yerine PDO veya MySQLi kullanmaya özen göstermemiz gerekiyor. Bende bu doğrultuda PDO'ya kolay adapte olmak, hızlı ve düzenli kod yazarak SQL sorguları oluşturmak için bir PDO sınıfı yazdım.


PDOx

Yazdığım sınıfın adını PDOx olarak belirledim. PDOx kullanarak hızlı bir şekilde PDO kullanabilir, sınıf içerisinde gelen metotlar ile birlikte çok daha hızlı ve düzenli şekilde SQL sorguları oluşturabilirsiniz. Şimdi PDOx'u indirelim ve kullanımı ile ilgili detaylara göz atalım. 

Download PDOx - Read Documentation - View on Github


Notlar ve Öneriler

- PDOx'u kullanmak için sunucunuzda PDO'nun aktif olması gerekmektedir.

- select() metodunu kullanmazsanız, bu tüm alanları seçtiğiniz anlamına gelir. Ama SQL performansı için, select() metodunu kullanmanızı ve sadece kullanacağınız alanları seçmenizi öneririm.

- get() ve getAll() metotlarına parametre olarak 'true' değeri gönderirseniz, geriye dönen değerler object (nesne) değil, array (dizi) olur. Örnek: getAll(true); veya get(true);

- PDOx'u kullanarak MySQL dışında PostgreSQL ve SQLite  veritabanlarına bağlanabilirsiniz.

- PDOx, sadece temel SQL komutlarını hızlı ve düzenli bir şekilde oluşturmanızı sağlar. Her ne kadar geliştirmeye devam etsem de, daha ileri düzey SQL sorguları için orjinal PDO sınıfını kullanabilirsiniz.

- PDOx üzerinden orjinal PDO metotlarını kullanmak için 'pdo;' özelliğini kullanabilirsiniz. Örnek: $db->pdo->prepare("..."); ... Bu şekilde, $db->pdo ile PDO'nun tüm metotlarına erişebilir ve kullanabilirsiniz.


Son olarak;

Eğer PDOx sınıfı ile ilgili olarak söylemek istediğiniz olumlu, olumsuz görüş ve istek belirten her türlü mesajı ister bu konu altına yorum bırakarak, ister iletişim sayfasını kullanıp e-posta atarak bana iletebilirsiniz. PDOx'u geliştirmeye devam etmeyi düşünüyorum. En azından, en iyi ve sağlam şekilde belirttiğim temel görevleri yerine getirene kadar. Böylece bir çok arkadaşımızın işleri kolaylaşmış, daha hızlı, düzenli ve güvenli kod yazmış olacak. 

Eğer PDOx konusunda "benimde çorbada tuzum olsun" derseniz, PDOx on Github sayfasından geliştirmelere dahil olabilir veya en son güncellemelerden bilgi sahibi olabilirsiniz.

İyi kullanımlar! 

Son olarak; "BİLGİ PAYLAŞTIKÇA GÜZEL..."


Yorumunu Gönder     Sende görüşünü yaz!

66 adet yorum yapılmış.   Sende yap!

Murat demiş ki; 24 Ağustos 2014 Pazar, 19:20
Eline sağlık güzel bir sınıf olmuş, ancak verileri array olarak return etmiyor ve num_rows kısmında bir sorun var..

İnceleyip geri dönüş yaparsan sevinirim..
İzni Burak Demirtaş demiş ki; 24 Ağustos 2014 Pazar, 21:57
@Murat; kardeşim şimdi kontrol ettim ama num_rows olayında bir sorun yok. $db->count(); olarak kullanıldığında, yani count() metodu çağırıldığında kayıt sayısını döndürüyor. Ayrıca, verileri array olarak döndürmek için get veya getAll metotlarında parametre olarak true; vermen yeterli. bkz: ->get(true) veya ->getAll(true)
Cihan Durdu demiş ki; 20 Eylül 2014 Cumartesi, 06:50
Merhaba bu sınıfın kod içerisinde kullanımını da izah edebilirmisiniz bu işte yeniyim ve benim gibi yeni olan arkadaşlar için de çok faydalı olacağını düşünüyorum. En azından bir örnekte misal listeleme işlemi yapılırken. Döngü içerisinde listeleme kodları ile birlikte bir örnekle açıklarsanız çok memnun oluruz. Şimdiden teşekkrüler.
İzni Burak Demirtaş demiş ki; 21 Eylül 2014 Pazar, 04:34
@Cihan Durdu; aslında github sayfası üzerinden geliştirme yapıyorum ve buradaki dökümantasyonu da güncellemeye çalışıyorum. Örneğin github.com/izniburak/PDOx/blob/master/example.php sayfasındaki örneğe bakarsanız, bir sql sorgusu oluşturup, döngü ile verileri yazdırdım. Tabi bu sizin örneklerinize göre değişebilir. Net olarak istediğiniz bir örnek varsa, sizin için o şekilde açıklayıcı bir örnek yazabilirim.
kerim öztan demiş ki; 27 Eylül 2014 Cumartesi, 20:55
count() fonksiyonunda bir hata aldım
Fatal error: Call to undefined method stdClass::count() in C:\xampp\htdocs
aynen dediğiniz gibi kullanıyorum
$kategoriBul = $db->from('kategoriler')->where('kategori_id',"=",$id)->where("kategori_tip","!=",$tip)->getAll();
if ($kategoriBul->count() > 0){
.......}
tamda count() fonksiyonunda hata veriyor. sebebi ne olabilir acaba yardım edermisiniz
İzni Burak Demirtaş demiş ki; 27 Eylül 2014 Cumartesi, 21:10
@kerim; $kategoriBul->count(); şeklinde değil de, $db->count() şeklinde kullanmanız gerekiyor hocam. PDOx sınıfından almanız gerek veri sayısını. Bu şekilde yaparsanız sorun yaşamazsınız. Yine de bir şey olursa, sorabilirsiniz.
Nergis YILDIZ demiş ki; 30 Eylül 2014 Salı, 13:17
burak bey benim sormak istediğim birşey var. php'de class larla çalışma konusunda yeniyim sormak istediğim şu aynı sayfa içinde 5-6 tane sorgu yapacağım mesela her sorgumda aynı $db nesnesini kullanabilirmiyim yoksa her seferinde yeni bir nesne yaratıp mı kullanmam lazım?
İzni Burak Demirtaş demiş ki; 30 Eylül 2014 Salı, 17:58
@Nergis; genel olarak sayfa başında include ettiğiniz ayar dosyası gibi bir dosya varsa, burada bir kere PDOx nesnesini new etmeniz yeterli olur. Daha sonra nesneyi atadığınız değişkeni kullanabilirsiniz. Bir sayfada birden fazla sorguda oluşturabilirsiniz. Sıkıntı olmaz. Eğer detaylı yardım isterseniz, iletişim sayfasından bana ulaşabilirsiniz.
Mahir Çatal demiş ki; 10 Kasım 2014 Pazartesi, 16:45
Tek kelime ile, harika yazılmış bir sınıf olmuş, ellerinize sağlık bu tarz sınıfların çoğalması temennisi ile, yeniden teşekkür eder iyi çalışmalar dilerim.
İzni Burak Demirtaş demiş ki; 12 Kasım 2014 Çarşamba, 19:32
@Mahir; beğenmenize sevindim hocam. İşinize yaradı ise ne mutlu bana. Vaktim oldukça bu tarz sınıflar yazmaya çalışıyorum. Yazdıkça da paylaşacağım. Tekrar sağolun.
Erdoğdu demiş ki; 18 Kasım 2014 Salı, 16:59
Çok Güzel olmuş, elinize sağlık. PDO Oracle İle kullanılabiliyor. Bu class da kullanılabiliyor değil mi ?
İzni Burak Demirtaş demiş ki; 19 Kasım 2014 Çarşamba, 20:29
@Erdoğdu; şu an da MySQL, SQLite ve PostgreSQL ile çalışmakta. Kısa zaman içerisinde Oracle bağlantısını da yapacağım. İlerleyen günlerde gerek blogumdan gerekse Github üzerinden güncellemeyi yayınlayacağım.
Emre can demiş ki; 7 Mart 2015 Cumartesi, 00:08
Valla emeğine sağlık çok güzel bir sınıf olmuş, inşallah projemde kullanıcam tasarımım bitince
İzni Burak Demirtaş demiş ki; 10 Mart 2015 Salı, 00:03
@Emre can; beğenmenize sevindim hocam. Geliştirmeye devam ediyorum boş bulduğum vakitlerde. En iyi hale getirmeye çalışıyorum. Aklınıza gelenler olursa, öneride bulunabilirsiniz. Sınıfın en son haline kesinlikle Github'dan göz atın. İyi kullanımlar :)
sinan demiş ki; 11 Nisan 2015 Cumartesi, 19:03
sınıf guzel fakat and olayını nasıl yapılıyor sınıf içinde and kullanımı bulunmuyor.
yine where olarakmı kullanmak gerekiyor. and kullanıldıgı taktide hataya düşüyor sorgu.
İzni Burak Demirtaş demiş ki; 14 Nisan 2015 Salı, 16:11
@sinan; hataya düşmemesi gerekli. and kullanmak için birden fazla where() metodunu birbirine bağlayabilirsiniz. şöyle ki; $db->from('table_name')->where('id', 10)->where('baslik', 'Burak')->getAll();
faruk can demiş ki; 17 Nisan 2015 Cuma, 14:22
Merhabalar. classınızı başarılı buldum. Bir PHP Frameworku tasarlıyorum, kullanmam için ufak değişiklikler yapmam gerek. İsimizi belirterek bu şekilde kullanmam MİT lisans şartlarınıza uygun mudur?
İzni Burak Demirtaş demiş ki; 18 Nisan 2015 Cumartesi, 23:11
@faruk can; öncelikle başarılar hocam, umarım güzel bir yapı olur. Tabi ki kullanabilirsiniz belirttiğiniz şekilde, herhangi bir sıkıntı olmaz. Ben PDOx için geliştirme çalışmaları yapıyorum. Yakın zamanda iyi bir update getireceğim. Github üzerinden takipte kalmanızı öneririm. Saygılar.
sinan demiş ki; 23 Nisan 2015 Perşembe, 17:30
evet o şekilde kullanım yapmıştım sorun kalmamıştı. fakat şimdide sınıfı kullanırken fonksiyonlarda hata alıyorum bu konuda kaçırdıgımız olay nedir.
//function sver($id,$deger){
//$sql2 = $db->prepare("select $deger from ert where no=$id");
//$sql->execute(array($deger));
//$row2=$sql2->fetch(PDO::FETCH_ASSOC);
//}
şeklinde sorgular çalışmıyor. sizin sorgu yontemizlede çalışmıyor
Call to undefined method pdo::prepare
Fatal error: Call to undefined method Database::prepare()

vs gibi hep hata aldım :)) nedir cozumu acaba normal kullanımda çalışan sorgularım fonksiyon içinde çalıştıramadım global değişkenide atadım başka şeylerde denedim yemedi :))
İzni Burak Demirtaş demiş ki; 27 Nisan 2015 Pazartesi, 18:48
@sinan; kullandığın yöntemde şu şekilde bir değişiklik yapman gerekli. PDOx'da sınıf içerisinde direkt olarak pdo metotlarına erişmek istersen, $db->pdo->prepare("..."); gibi işlem yapman gerek. Yani $db->pdo kalıbı şekilde kullanmalısın.
Serkan Türkmen demiş ki; 9 Mayıs 2015 Cumartesi, 13:09
Hocam update sorgusunda hatalar alıyorum. Eğer sınıfın yeni versiyonu yakın zamanda gelmeyecekse bir gözden geçirebilir misiniz?
İzni Burak Demirtaş demiş ki; 13 Mayıs 2015 Çarşamba, 18:01
@serkan; hangi sorguda hata alıyorsunuz ve hata nedir hocam? kodu paylaşabilirseniz, inceleme yapayım.
seçkin kılınç demiş ki; 13 Mayıs 2015 Çarşamba, 18:34
Ellerine sağlık çok işime yarayan bir class birçok işimi sayende daha hızlı ve güvenilir şekilde hallediyorum. Birde Class'ın metod isimlerinde değişiklik yaptım ve öyle kullanıyorum fakat Genel olarak Class'ın size ait olduğunu projelerimde paylaşıyorum. Birde prepare için bir metod hazırlayabilirseniz çok güzel olacak... ayrıca sonraki güncellemelerde neler gelecek onlar hakkında bilgi verebilir misiniz ?
İzni Burak Demirtaş demiş ki; 15 Mayıs 2015 Cuma, 00:34
@seçkin; çok teşekkürler hocam. işinize yaramasına ve kolaylaştırmasına sevindim. Tabi ki istediğiniz şekilde değişiklikler yaparak kendinize en uygun hale getirebilirsiniz. İlerleyen güncellemelerde bir kaç yeni metot gelecek, cache özelliği gelecek. Prepare metodu için de bir şeyler düşünebilirim ama, pdo'nun kendi prepare metodunu kullanmak daha mantıklı olur bence. Çünkü o metotlarda zaten zincirleme gibi kullanılıyor. Farklı bir işlem yaptırılmaz yani. Ama bunu kolaylaştıracak bir şeyler düşünebiliriz tabi. Fikirleriniz için teşekkürler :)
Aydın Topcu demiş ki; 23 Mayıs 2015 Cumartesi, 17:10
İyi günler. PDOx sınıfını kullandığımda Fatal error: Undefined class constant 'ATTR_DEFAULT_FETCH_MODE' in /home/webhosting/1358/xxx/adminx/veritabani/pdox.class.php on line 68 hatası alıyorum. Bunu nasıl düzeltebilirim yada ATTR_DEFAULT_FETCH_MODE komutu yerine hangi komut kullanılabilir. Teşekkür ederim.
İzni Burak Demirtaş demiş ki; 26 Mayıs 2015 Salı, 22:09
@Aydın Topçu; bahsettiğiniz hata ile ilgili araştırma yaptım ama, net bir sonuca ulaşamadım ne yazık ki. Normalde PDOx sınıfı böyle bir hata vermiyor. Ki zaten bu pdo'nun ham ayarları ile ilgili bir kısım. Varsayılan fetch modunu ayarlamak için kullanıyorum bunu. Sonuçların direkt olarak object gelmesi için. Araştırmalara devam edeceğim, testler yapacağım. Herhangi bir gelişme olursa bilgi veririm sizede. Sizde işlem yaptığınız sunucuda php ayarlarına, pdo ayarlarına ve çalıştığınız php versiyonuna bir göz atın. Uyumsuzluklar çıkmış olabilir.
yavuz şahin demiş ki; 23 Haziran 2015 Salı, 18:16
öncelikle teşekkür ederim. localhostta çalışırken Türkçe karakter sorunu yoktu. aynı ayarlara sahip sunucuya yükleme yaptığımda update işlemlerinden sonra Türkçe karakter sorunu oluştu. Bu konuda yardımcı olabilir misiniz?
İzni Burak Demirtaş demiş ki; 25 Haziran 2015 Perşembe, 04:08
@yavuz; sunucuda oluşturduğunuz veritabanı ve tabloların karakter setlerini kontrol etmenizde fayda var. tamamen utf8 kodlaması ile çalışıyorsanız, dosya karakter setlerini de buna göre ayarlamalısınız.
umut kınık demiş ki; 6 Temmuz 2015 Pazartesi, 13:01
pdox.class.php dosyası dreamveawer'da açıldığı zaman; 32,34,63,124,160,377,396 ve 509. satırlarda kod yazım hatası vermekte. class'ı sayfaya çağırıp kullanmak istediğim zaman "Parse error: syntax error, unexpected '$this' (T_VARIABLE)" gibi yazım hataları almaktayım.
bu konuda yardımcı olaiblirmisin burak ?

32. Satır: private $result = [];
34. satır: private $op = ['=','!=','<','>','<=','>=','<>'];
63. satır: $this->pdo->exec("SET NAMES '".$charset."' COLLATE '".$collation."'");
124. satır: $_where = [];
160. satır: $_keys = [];
377. satır: $val = "" . implode(", ", array_map([$this, 'escape'], $data)) . "";
396. satır: $values = [];
509. satır: $this->result = [];
İzni Burak Demirtaş demiş ki; 10 Temmuz 2015 Cuma, 15:42
@umut kınık; Github'da bulunan son güncellemelere bakarsanız daha iyi hocam. Sürekli geliştirdiğim ve düzenleme yaptığım için arada olan bir versiyonu indirmiş olabilirsiniz. Şu an ben test yaptım, herhangi bir hata bulunmamakta. Tekrar bir kontrol edin güncel class dosyası ile.
Okan Parlak demiş ki; 8 Ekim 2015 Perşembe, 09:27
Tsekkurler derim indirdim istifade edeceğim
Ahmet Develi demiş ki; 4 Kasım 2015 Çarşamba, 13:04
Merhaba,

Class yapınızı kullanıyorum ancak,
tablo setim; utf8_general_ci
karakter setim : utf8


olmasına rağmen insert ve update işlemlerinde türkçe karakter hataları almaktayım.

Normal bir şekilde (mysqli veya pdo) insert ve update işlemi gerçekleştirdiğimde bir problem bulunmamaktadır.
İzni Burak Demirtaş demiş ki; 25 Kasım 2015 Çarşamba, 03:54
@Ahmet Develi; Merhabalar. Yoğunluktan dolayı biraz geç cevaplıyorum sorunuzu kusura bakayın. Yaptığım testlerde herhangi bir sorun yaşamadım ben. Karakter setini utf-8 seçtiğinizde; sitenin, dosyaların vs de karakter setleri utf-8 olmalı. Bunlara dikkat edip, tekrar kontrol etmenizi öneririm.
emre kara demiş ki; 20 Ocak 2016 Çarşamba, 00:46
Bu yeni sürümde ayrıyetten cache.php var bu ne işe yarıyor acaba
İzni Burak Demirtaş demiş ki; 1 Şubat 2016 Pazartesi, 23:26
@emre kara; Cache ile sorgularınızdan dönen sonuçları önbellekleyip, daha hızlı bir şekilde getirebilirsiniz. Cache süresi boyunca sql komutları tekrar çalışmaz, veriler önbellekten gelir. Sql için sunucuya fazla yük göndermemiş olursunuz. Bu olay, yüksek trafikli sitelerde faydalı olabilir. Gelen trafiğe ve yoğunluğa göre, sunucu üzerindeki bellek ve işlem kullanımlarına göre cache özelliğini aktif veya pasif edebilirsiniz.
Enes demiş ki; 24 Şubat 2016 Çarşamba, 15:16
Öncelikle Sınıf için teşekkür ederim.
Sınıf ile alakalı sorum ve bir talebim olacak
Sınıf'ta neden prepare ve execute kullanmadınız. ( Yanlış anlaşılmasın sadece kullanım amacıma uygun olup olmadığından soruyorum. )
Sınıfın prepare ve execute kullanımı ile ilgili tanımlayıcı bir açıklama yapabilirseniz sevinirim.

İyi Çalışmalar
İzni Burak Demirtaş demiş ki; 5 Mart 2016 Cumartesi, 16:06
@enes; sınıf içerisinde direkt olarak prepare kullanımı yapmadım, normal şekilde query ve exec ile sorgu çalıştırdım. Ama zaten bu işlemler query run edilmeden önce, hazırlanma aşamasında yapılıyor. Siz ben yine de sınıf içinden PDO'daki prepare metodunu falan kullanmak istiyorum derseniz, direkt olarak PDO metotlarına erişmek için $db->pdo->... şeklinde kullanım yapabilirsiniz.
Mahir ÇATAL demiş ki; 15 Nisan 2016 Cuma, 08:27
Burak hocam merhaba,
son güncelleme ile ilgili sınıfı aşağıdaki şekilde kullanıyorum ama, iki orderBy 'ı kullanamadım sanırım, sadece sonda kini dikkate alıyor. Dokümanda da bulamadım var mıdır bir çaresi. Kullanım şeklim aşağıdaki gibidir.

$db->table('00_menu')->where("menu_aktif",1)->orderby('menu_submenu_id ','ASC')->orderBy('menu_sira ASC')->getAll();
İzni Burak Demirtaş demiş ki; 26 Nisan 2016 Salı, 03:08
@Mahir Çatal; uyguladığınız gibi zincirleme olarak orderBy özelliği mevcut değil, ama yakında yapacağım güncellemelerden biri olarak bunu ekleyebilirim. Sorununuzu şimdilik şu şekilde kolayca çözebilirsiniz: .....>-orderby('menu_submenu_id ASC, menu_sira ASC')->getAll();
ömer faruk demiş ki; 16 Haziran 2016 Perşembe, 14:42
merhaba,
$db->pdo şeklinde kullandığımızda PHP Strict Standards: Only variables should be passed by reference in hatası alıyorum. pdox ile hata yakalamada sorun yaşıyorum. db.error... çalışmıyor..yardımcı olursanız sevinirim.
umut kınık demiş ki; 29 Haziran 2016 Çarşamba, 14:00
merhaba,
bir tabloda güncelleme yapmak içindeki değeri +1 arttırmak istiyorum bunun için ne yapmam gerekiyor?
Ayrıca tarih fonksiyonlarını nasıl kullanacağız month(current_date()) gibi ?
İzni Burak Demirtaş demiş ki; 6 Temmuz 2016 Çarşamba, 02:26
@Ömer Faruk; $db->pdo şekilde kullanımı test ettim ama herhangi bir hata almadım. Hangi versiyon kullanıyorsunuz PHP de. Strict Standart bir hata değildir, uyarı gibi düşünebilirsiniz. $db->pdo kullancaksanız, errorları yine $db->pdo->error... şeklinde yakalamanız gerekmekte. Veya direkt olarak PDOException kullanabilirsiniz.
İzni Burak Demirtaş demiş ki; 6 Temmuz 2016 Çarşamba, 02:29
@Umut Kınık; $db->update() metodunun kullanımına direkt olarak dökümantasyon sayfasından bakabilirsiniz. Eğer sıkıntı çıkarırsa, direkt olarak $db->query() fonksiyonunu kullanarak UPDATE sorgunuzu yazabilirsiniz. Tarih fonksiyonları için sınıf içerisinde şimdilik bir ekleme yok. Bunlarıda direkt olarak $db->query() fonksiyonu ile kullanabilirsiniz ham sql yazarak.
Mehmet Altuğ demiş ki; 7 Ağustos 2016 Pazar, 20:18
Merhabalar hocam,
Öncelikle hazırladığınız sınıf gerçekten çok mükemmel ve işlevsel olmuş. Bunun için ayrıca teşekkür etmek isterim. Fakat sormak istediğim birşey var.

Sınıfı başlatırken örneğin $db = new Pdox($config) şeklinde değilde direk $db = new Pdox() şeklinde başlatma imkanımız yokmu acaba ?
İzni Burak Demirtaş demiş ki; 10 Ağustos 2016 Çarşamba, 02:39
@Mehmet Altuğ; öncelikle düşünceleriniz için teşekkürler, faydalı bir kütüphane olduysa ne mutlu bana... Sorunuza gelince, kütüphane yapısı itibariyle mümkün değil. Sorguların çalıştırılması için veritabanı bağlantılarının yapılması gerekiyor. Bu nedenle "new Pdox" yaparken, config belirtmek zorundasınız.
Emre S. demiş ki; 20 Eylül 2016 Salı, 21:32
Merhaba, Oracle baglantisi kurmasi icin ileri versiyonlarda dusuncesiniz var mi?
İzni Burak Demirtaş demiş ki; 21 Eylül 2016 Çarşamba, 02:04
@Emre; aslında Oracle ile bağlantı olayı mevcut. PDO üzerinden bağlanabiliyorsunuz, dökümantasyonu okuyabilirsiniz. Ama PDOx kütüphanesi ham SQL ürettiği için, Oracle ile tam uyumlu sorguları ancak ham sorgu yazarak kullanabilirsiniz PDOx içinde. Bunun içinde PDOx sınıfının query metodunu kullanabilirsiniz.
Emre S. demiş ki; 21 Eylül 2016 Çarşamba, 17:12
Anliyorum, geri donusunuz icin tesekkur ederim. Iyi calismalar dilerim.
Berkay demiş ki; 21 Eylül 2016 Çarşamba, 17:25
"Select" yapilan sorgularda IF/ELSE nasil yapiliyor? Acaba örnek verebilir misiniz? PasteBin de olabilir
Mehmet Altuğ demiş ki; 23 Eylül 2016 Cuma, 11:48
İyigünler Hocam. Öncelikle kütüphane için tekrardan teşekkür ederim. Gerçekten çok kullanışlı olmuş fakat kafama takılan 2 soruyu sormak istiyorum.
Birincisi, örneğin telefon, fax, gsm gibi veriler geliyor olsun formdan. Şimdi ben bu değerleri inserte eklemeden önce boşmu gelmiş dolumu gelmiş diye kontrol ediyorum. Eğer boş ise telefon = NULL şeklinde null yapıyorum fakat ne yaparsam yapayım veritabanına asla NULL kaydetmiyor. Eğer alan integer ise sıfır string ise boş atıyor ama asla null kaydetmiyor. Sadece o veriyi hiç yollamazsam NULL atıyor. Kısaca birinci sorum verileri boş ise null kaydetmesi için ne yapabiliriz. (Tablolar varsayılan NULL şeklinde. Defalarca kontrol ettim)

İkinci sorum ise view şeklindeki sorguları sizin kütüphaneniz ile kullanabilmemizi sağlayan bir fonksiyon mevcutmu ? Yine örnek vermek gerekirse "musteriler" adında bir view hazırladım ve örneğin düzenleme yapmak istediğimde where ile bunu çağırıyorum fakat bütünlük olması açısından query ile değilde direk sizin kütüphaneniz ile kullanmam mümkünmü bunu öğrenmek istemiştim.

Şimdiden çok teşekkür ederim.
İyi Çalışmalar Dilerim.
İzni Burak Demirtaş demiş ki; 26 Eylül 2016 Pazartesi, 18:04
@Mehmet Altuğ; tablo alanlarınız varsayılan null olabilir şekildeyse sorun olmaması lazım aslında ama, yine de belirttiğiniz konu ile alakalı olarak kütüphanede güncelleme yaptım. Github'dan veya composer üzerinden update yapabilir, deneyebilirsiniz. İkinci sorunuzu ne yazık ki tam anlayamadım. Tam olarak ne yapmak istiyorsunuz? Kütüphane üzerinden verileri alıp, view'e basmak falan mı?

@Berkay; şurada böyle bir soru cevapladım. bakabilirsin: github.com/izniburak/pdox/issues/8
ömer çiçek demiş ki; 21 Ekim 2016 Cuma, 16:39
Çok faydalı bir sınıf ellerinize sağlık
İzni Burak Demirtaş demiş ki; 23 Ekim 2016 Pazar, 22:22
@ömer çiçek; sağolun hocam, faydalı olduysa ne mutlu :)
murat demiş ki; 17 Aralık 2016 Cumartesi, 00:48
Merhaba hazırladığınız sınıfı ilk defa kullanacağım fakat bir problem görememe rağmen şu hatayı almaktayım.

Parse error: syntax error, unexpected '[' in /home/*******/vendor/izniburak/pdox/src/Pdox.php on line 37
ilgili satır
protected $result = [];
murat demiş ki; 17 Aralık 2016 Cumartesi, 00:55
bir önceki mesajımda ki hatayı $config kısmını kaldırınca alıyorum onu kaldırmazsam sayfa hiç açılmıyor bembeyaz kalıyor hata bile göremiyorum.
İzni Burak Demirtaş demiş ki; 21 Aralık 2016 Çarşamba, 02:40
@murat; yaptığım kontrollerde herhangi bir problem ile karşılaşmadım. Aldığınız hata kısa array kullanımı ile ilgili bir şey. Hangi PHP versiyonunu kullanıyorsunuz bilmiyorum ama güncel bir versiyon kullanmanızı öneririm. PHP 5.4 olması gerekiyor bu sınıfı kurmanız ve kullanmanız için composer aracılığıyla. Ama benim önerim daha güncel olan PHP 5.5, 5.6 hatta mümkünse PHP 7'nin son versiyonlarını kullanmanızdır. Kütüphanenin son haline github üzerinden erişebilir veya composer üzerinden update yapabilirsiniz.
Bilal Can demiş ki; 15 Eylül 2017 Cuma, 22:12
Merhaba,
Başarlı bir paylaşım olmuş emeğine sağlık eminim çoğu kişinin işine yarayacaktır.
Bu ara da dosya dizininde nasıl değişiklik yaparım hepsini tek bir klasör içine almak istiyorum.
Fakat Resimde belirttiğim gibi tüm dosyaları tek bir yerde bulunacak şekilde dosya dizini nasıl değiştire bilirim.
i.hizliresim.com/yznYBa.png
İzni Burak Demirtaş demiş ki; 16 Eylül 2017 Cumartesi, 03:42
@Bilal Can; teşekkürler, umarım işinize yarar :) Gönderdiğiniz görsele baktım ama, tam olarak ne yapmak istediğinizi anlayamadım. Composer kullanıyorsanız zaten dosya-dizin meselelerini o hallediyor. Siz sadece tanımlamayı yapıp kullanabilirsiniz.
Ozan demiş ki; 7 Ekim 2017 Cumartesi, 02:22
önsabitleri kendimiz nasıl belirleyebiliriz? mesela OBJ yerine PDO::FETCH_KEY_PAIR kullanmak istiyorum.
İzni Burak Demirtaş demiş ki; 9 Ekim 2017 Pazartesi, 22:20
@Ozan; merhabalar, şu an dönüşüm için FLAG belirtemiyorsunuz, ilerleyen zamanlarda ekleyeceğim. Eğer object olarak değil de array (dizi) olarak almak isterseniz; get veya getAll metoduna parametre olarak 'array' göndermeniz yeterli. Örneğin: $db->table('test')->getAll('array');
Murat demiş ki; 29 Kasım 2017 Çarşamba, 13:50
Merhaba, eline sağlık sınıfı projemde kullanıyorum gerçekten çok işime yarıyor.
benim bir çözüm önerisine ihtiyacım var.
tüm tablo yapılarımda ayrı olmasına rağmen bir tabloda gerekli olduğu için verilerimi virgül ile ayırıyorum
"a,b,c,d,e," gibi ben buradan sorgumu like('sutun','%,'.$aranan.',%') şeklinde çözdüm fakat bundan daha basit kullanımı
ya da find_in_set('a','a,b,c') gibi bir kullanım yolu çözümünüz var mı
İzni Burak Demirtaş demiş ki; 6 Aralık 2017 Çarşamba, 21:14
@Murat; teşekkürler hocam. Şu an da belirttiğiniz şekilde bir metot bulunmuyor ama, belki ilerleyen zamanlar bazı geliştirmeler yapılabilir bu konuyla alakalı.
UĞUR KAŞKAVALCI demiş ki; 24 Mayıs 2018 Perşembe, 11:47
hocam şimdi indiriyorum. eline koluna sağlık.
İzni Burak Demirtaş demiş ki; 19 Haziran 2018 Salı, 15:51
@Uğur; faydalı olduysa ne mutlu hocam. İyi çalışmalar :)
Remzi ÖNEL demiş ki; 21 Ekim 2018 Pazar, 15:37
Merhabalar. Öncelikle ellerinize sağlık. Çok kullanışlı bir sınıf olmuş.
PDOx sınıfını ciddi bir projede kullanmayı düşünüyorum. Bazı noktalar var kafama takılan.
Örneğin; update() fonksiyonunu kullanırken eğer gönderilen veriler veritabanındaki veriler ile aynı ise fonksiyon false olarak dönüyor.
Ayrıca sistemin içerisinde bir cache sınıfı mevcut ama devre dışı bırakmışsınız. Sınıf içindeki $cache değişkenini varsayılan olarak false atamışsınız. Bunu değiştirince cache sistemi düzgün çalışıyor (hatalı çalışıyorsa lütfen söyleyin :)). yani ben bir hata göremedim.
Bu sorularıma cevap verirseniz çok sevinirim. iyi çalışmalar dilerim
İzni Burak Demirtaş demiş ki; 26 Ekim 2018 Cuma, 16:31
@Remzi; sınıfı elimden geldiğince ve aldığım geri dönüşlere göre sürekli geliştirmeye çalışıyorum ve iyileştirmeler yapıyorum. Umarım faydalı olur. Sorularınıza gelince; update metodunda bir sıkıntı bulunmuyor aslında, bu konuyla alakalı olarak bir arkadaş daha böyle bir şey söyledi ama, sebebini tam bilmiyorum. Belki aktif olarak kullanılan database versiyonundan kaynaklı bir durumdur, bunu araştıracağım. Cache meselesi ise, bu özellik default olarak kapalı olan bir şey zaten. Yapacağınız her "select" sorgusu için cache kullanmak istiyorsanız, bunu 'true' yapmak mantıklı. Diğer türlü sorgu oluştururken 'cache()' metodunu tetikleyerek, ilgili queryi cacheleyebilirsiniz.

Yine aylar olmuş ve buralarda gözükmüyorum. Ne zaman "buralara daha çok vakit ayıracağım, bol bol yazacağım" desem, kesin başka bir şeyler çıkıyor; işler, güçler, yoğunluklar vs, odaklanamıyorum. Öyle ya da böyle bunu bir düzene oturtacağım. inatçıyım bu konuda....

8 Temmuz 2018, 04:55   —   #genel   —   Yorum yok.   —   Devamını Oku »

Buraları yine oldukça aksatmış olmanın verdiği iç rahatsızlığı ile, geçen haftadan beri bir şeyler karalamaya olan isteğim ancak şu an vuku buluyor. Geçen hafta oldukça yoğun ve hareketli geçtiği için yazmaya vakit bulamadım aslında. Ya da ne bileyim, belki de bahane buluyorum......

27 Şubat 2018, 11:34   —   #genel   —   2 yorum var.   —   Devamını Oku »

Gidelim buradan...

"Gidelim buradan... Göğsünü sıkan, içini daraltan o laneti geride bırakıp gidelim. Burada yağmur bile güzel yağmıyor artık. Yağmuru güzel yağan bir yerlere gidelim....

5 Ocak 2018, 04:57   —   #karalamaca   —   Yorum yok.   —   Devamını Oku »

$_2018 = new HappyYear();

Zamanın ne denli hızlı aktığını bilmiyorum ama, gerçekten "su gibi" akıp geçiyor deyimi doğru galiba. Ne ara 2018 geldi, kapımıza dayandı; hiç bir fikrim yok. Oysa ben daha tarih yazmak zorunda olduğum kağıtlara "2017" yazmaya bile alışmamıştım. Şimdi bir de 2018 çıktı başımıza. ...

31 Aralık 2017, 17:10   —   #genel   —   Yorum yok.   —   Devamını Oku »

İnsanın içindeki sıkıntıya bir isim, bir sebep bulamamasına hep şaşırmışımdır. Çok şaşırdığı ne varsa, bunları çok mu yaşıyor insanlar genelde hiç bilmiyorum. Ama bu en azından bende genelde böyle oluyor. Açık konuşayım mı? Birinin bir sözü vardı, ama kimindi hatırlamıyorum. Şöyle diyordu: "Kafamdan atamıyorum. Hep aklıma geliyor, hem de en tuhaf zamanlarda. Duştan çıkarken, sokakta yürürken, gece yatağıma yatarken; bilinçli olarak bir şey düşünmediğim zamanlarda."... Sanki hayat denen bu değişik alem içinde, bir yerlerde bu söz içerisinde bir yerlerde sıkışmış kalmış gibiyim. Nedenini bilmiyorum. Belki de biliyorum. Belki de bildiğimi bilmiyorum. Belki anlatamıyorum, belki anlatmak istemiyorum. Belki içimden atmak istiyorum. Belki de atamıyorum. Belki seviyorum, belki de yine seviyorum.. Bazen çok saçmalıyorum değil mi? Biliyorum. Sarhoş da değilim ama olmadığıma da beni kim ikna edebilir? Zaten sarhoşken de anlatamıyorum. Atamıyorum. Seviyorum. Neyse, belki de en iyisi uyumak.

11 Aralık 2017, 04:27   —   #karalamaca   —   3 yorum var.   —   Devamını Oku »

hello İstanbul!

Üniversite hayatını bitirdik. Aslında planım, elimdeki projeler ile ilgilenip bir yandan da sene sonuna kadar kafa dinlemekti. 2018 itibariyle iş-güç arayışlarına girişecek ve mutlu olabileceğim, bana bi'şeyler katabilecek, hem kendime hem onlara fayda sağlayacağım bir şirket bulmak için adımlar atacaktım. Tahmin edeceğiniz üzere planlar yine tutmadı....

6 Ekim 2017, 10:02   —   #karalamaca   —   Yorum yok.   —   Devamını Oku »

Eylül'dü. 
Dalından kopan yaprakların, 
Sararan yanlarına yazdım adını. 
Sahte bir gülüşten ibarettin oysa. 
Ve hiç bilmedin ellerimin soğuğunu. ...

16 Eylül 2017, 17:13   —   #karalamaca   —   Yorum yok.   —   Devamını Oku »
daha fazla göster