Banner

ezSQL Veritabanı Sınıfının Kullanımı

Kategori PHP, Sql/MySql
05.07.2008
20885 Okunma

Kod yazarken şüphesiz ki nesne tabanlı programlamanın nimetleri olan sınıflardan (class) faydalanırız. Eğer hazırlayacağımız uygulama PHP dili ile yazılmakta ve MySQL veritabanını kullanacaksa size şiddetle tavsiye edeceğim sınıf WordPress‘in de altyapısını oluşturan ezSQL sınıfıdır. Zaten daha önce bu sınıfı kısaca tanıtmıştım. Bu makalede kullanımı oldukça basit ve pratik olan bu sınıfı temel olarak MySQL veritabanı ile nasıl kullanılacağını örneklerle anlatmaya çalışacağım. İyi seyirler…

ezSQL ile tanışma

ezSQL, PHP programlama dili ile yazılmış bir sınıftır (class). Her ne kadar en çok MySQL veritabanlarını yönetmek için kullanılsa da PHP-PDO, Oracle8, InterBase/FireBird, PostgreSQL, SQLite (PHP), SQLite (C++) ve MS-SQL veritabanlarında da kullanılabilir.

Bu sınıfın fonksiyonunu kısaca belirtmek gerekirse “veritabanına bağlanmanızı ve tablolarınızdaki verilerinizi yönetmenizi sağlar” diyebiliriz. WordPress gibi dünyada milyonlarca kişi tarafından kullanılan günlük sisteminin bu sınıfı kullanması sanırım ezSQL’in önemini ve kalitesini vurgulamanın en kısa yoludur.

Gerekli dosyalar

ezSQL, Justin Vincent isimli bir programcı tarafından yazılmıştır. Sınıf hakkında daha fazla bilgi almak ve gerekli dosyaları indirmek için ilgili siteyi ziyaret edebilirsiniz. Yazılarımda vermiş olduğum dosyaların indirme adresleri zamanla geçerliliklerini kaybedebiliyor. Bu nedenle kendi siteme de ezSQL’in son sürümü olan 2.04’ü yükledim. Buradan indirebilirsiniz.

ezSQL’i uygulamalarımıza dahil etme

ezSQL DosyalarYukarıda belirttiğim gibi bu makalede ezSQL’in MySQL veritabanı ile kullanımını anlatacağım. Bunun için sunucumuzda herhangi bir isimle yeni bir dizin oluşturuyoruz. İndirmiş olduğumuz paketin içinden mysql klasöründeki ez_sql_mysql.php ve shared klasöründeki ez_sql_core.php dosyalarını alıyoruz ve yeni oluşturduğumuz dizine yüklüyoruz. Bununla birlikte aynı dizinde boş bir index.php dosyası oluşturuyoruz.

Uygulamamızın anasayfası olduğunu düşündüğümüz index.php dosyasına şu kodları yazarak ezSQL sınıfını çağırabiliriz ve tam anlamıyla kullanmaya başlayabiliriz. Dikkat etmeniz gereken bir husus var ki o da veritabanı bilgilerini de (kullanıcı adı, parola, veritabanı ismi ve sunucu) bu satırlarda belirtiyoruz.

index.php dosyasının içeriği

Örnek uygulama

Bu aşamaya kadar bir sorun yaşamadan ve konuyu anlayarak geldiyseniz artık örnek bir uygulama ile ezSQL’in fonksiyonlarını tanıyabiliriz.

Örnek uygulama olarak bilgisayarımda basit bir veritabanı (bilgiler) ve tablo (bilgi_tablosu) oluşturdum. Tablonun yapısını daha iyi anlayabilmeniz için resmini aldım.
ezSQL Tablosu
Bu tabloyu elde edebilmek için aşağıdaki sql sorgusunu veritabanınızda çalıştırabilirsiniz.

ezSQL Fonksiyonları

Sıra geldi konunun can alıcı noktası olan ezSQL fonksiyonlarına. ezSQL işlemlerini dört temel metotla gerçekleştirir.

$db->query(query)
$db->get_var(query)
$db->get_row(query)
$db->get_results(query)

Bununla birlikte eğer ezSQL sınıfını kendi yazmış olduğunuz bir fonksiyonda kullanacaksanız fonksiyonun başına global $db; yazmayı unutmayın.

Şimdi site yapımında en çok ihtiyaç duyacağımız ezSQL fonksiyonları çıktılarıyla beraber görelim. Şunu da söylemeliyim ki ezSQL fonksiyonları benim aşağıda anlattıklarımla sınırlı değildir. Paketten çıkan yardım dosyasında daha fazla detaya ulaşabilirsiniz.

Örnek 1) Çoklu kayıtları çekme

Örnek 2)Tek satırdaki bilgileri çekme

Örnek 3)Tek bir bilgiyi çekme

Örnek 4)Tabloya kayıt girme

Örnek 5) Kayıt güncelleme

Örnek 6) Son yapılan sorguyu ve eğer varsa çıktısını görme

Örnek 7) İşlem sonucunda sonucun yapısını ve içeriğini görme

Örnek 8) Bir sütundaki değerleri alma

Örnek 9) Üsttekine göre daha hızlı bir şekilde bir sütundaki değerleri alma

Örnek 10) Veritabanının şemasını ve tablolarının özelliklerini görme

Sonuç

ezSQL sınıfı gördüğünüz gibi oldukça gelişmiş olmasının yanında son derece pratik bir kullanıma sahiptir. Ben size en temel ihtiyaçlarınızı giderecek fonksiyonları tanıttım. Daha fazla açıklama ile bu sınıfı daha iyi tanımak isterseniz indirmiş olduğunuz paketin içinden çıkan ez_sql_help.htm dosyasına bakabilir, sorularınız için Türkiye’deki programlama forumlarının (örn. turk-php) yanında ezSQL’in kendi forumunu da kullanabilirsiniz.

Bu yazıyı tamamladıktan sonra arama motorundan yaptığım araştırmada Yakup Gövler‘in de WordPress altyapısında ezSQL kullanımına değindiğini gördüm. Oraya da bir göz atarsınız.

ezSQL sınıfını buradan, örnek uygulama ile ilgili dosyaları ise şuradan indirebilirsiniz.

Saygılar, sevgiler…

Not: Lütfen bu yazıma, uygulama esnasında karşılaşmış olduğunuz hataları ve nasıl çözüleceğini sorduğunuz yorumlar yapmayınız. Bu ihtiyaçlarınızı forumlardan karşılamanızı rica ederim. Aksi takdirde malesef yorumlarınızı onaylamayacağım.

Not 2: Hergün gelen onlarca e-posta üzerine bu notu düşüyorum. Malum benimde bir işim ve kısıtlı bir zamanım olduğu için gerek e-posta yoluyla gerekse msn (wlm) vb. anlık iletişim kanallarıyla kişisel yardımda bulunmuyorum.

Comments of this post

brsyuksel

brsyuksel
05 July 2008

Çok hoş ve yalın bir anlatım olmuş tebrik ederim :)

yakuter

yakuter
05 July 2008

Bazen makaleleri anlatırken basite indirgeyeceğim diye gereğinden fazla uzattığımı düşünüyorum. Umarım yine bu şekilde uzatmamışımdır.

@brsyuksel, yalın dediğine göre sanırım anlaşılabiliyor. Sevindim bunu duyduğuma.

Alisko

Alisko
05 July 2008

güzel anlatım olmuş erhan abi, bundan sonraki çalışmalarımda kullanmayı deneyeceğim.

Mustafa

Mustafa
06 July 2008

iyi hoş ama normal dede bir vt dosyası oluşturup include ederek php nin dosyalarını kullanabiliyoruz fark nedir ? yada avantajı mysqli kutuphaneside kullanılabilir bu işlem için

yakuter

yakuter
06 July 2008

Mesel bir php dosyasını dahil etmek değil, veriatbanı sınıfını projemizde çalıştırmak. Bu kütüphane getirmiş olduğu kolaylıklarla projemize hız kazandırır. Aksi takdirde php’nin mysql fonksiyonlarını kullanmaya kalkarsanız düzenli ve temiz kodlu projeler yerine dağınık ve anlaşılması zor kodlara boğulmuş projeler elde edersiniz.

Mustafa

Mustafa
07 July 2008

Cevabın için teşekkürler
peki mysqli kütüphanesini alırsak yinemi bu ezSQL tarzı sınıflar daha önde oluyor ?

yakuter

yakuter
07 July 2008

@Mustafa, mysqli kütüphanesi oldukça geniş bir fonksiyon listesine sahip. Örnek vermek gerekirse sadece çekmiş olduğun sonucu görüntülemek için bile 14 tane fonksiyon bulunuyor. ezSQL çok daha sade bir kütüphane. Gereksiz fonksiyonlar yok denecek kadar az. Daha çok ihtiyaç duyulanlara yer verilmiş. Bununla birlikte insanlar yazım kuralları bakımından ezSQL’de daha rahat ettiklerini söylüyorlar. Malum mysqli biraz farklı.

Sonuç olarak çok gelişmiş ve detaylandırılmış fonksiyonlarla işimi görürüm diyorsan mysqli kullan. Ama ben bu zamana kadar yürüttüğüm projelerde hiç ezSQL’in bana sunduklarından fazla işleve ihtiyaç duymadım. Doğal olarak tavsiye edeceğim ezSQL’dir.

kell

kell
08 July 2008

Merhaba, oldukça faydalı bir makale olmuş teşekkürler.
Peki merak ettiğim bir soru var. Bu sınıf, anlık online sayısı 1000+ olan bir sitede kullanılırsa nasıl olur performans açısından ?

yakuter

yakuter
08 July 2008

@kell, bu sınıfı kullandığındaki performan ise normal bir veritabanı bağlantısı yaptığın andaki performans çok farklı değildir. Sonuçta ezSQL’i incelediğinde PHP’nin sunduğu MySQL bağlantı ve yönetim fonksiyonlarının daha derli toplu sunulması gibidir. Yani 1000+ sitelerde İster ezSQL’i kulllan, istersen direk PHP ve MySQL fonksiyonları kullan sonuç aynıdır. Fazla ziyaretçi girdiği için yavaşlama ezSQL kullansan da kullanmasan da gerçekleşir. ezSQL’in buna bir katkısı yoktur veya çok ama çok azdır.

kell

kell
08 July 2008

teşekkür ederim yakuter

Onur

Onur
24 July 2008

ezsql ile smarty’i birlikte kullanınca tadından yenmiyor :) tavsiye ederim.

Semih

Semih
02 June 2009

peki bunu smarty’le nasıl yapabiliriz?

yakuter

yakuter
08 June 2009

@Semih, bu soru farklı bir makale konusu. Yorumla cevap vermem mümkün değil.

Gökhan

Gökhan
13 July 2009

@semih,
Neyi nasıl yapabiliriz anlayamadım ve merak ettim, açıklayabilir misiniz acaba?
@kell
ezSQL’in önbellek desteği de var. memcache gibi değil, diske kaydediyor. Bu da işe yarayabilir.

Serkan

Serkan
29 October 2009

Böyle makaleler benim gibi php ile yeni tanışanlar için çok harika. Çok teşekkürler…

Ahmet

Ahmet
05 December 2009

Ayrıntılı anlatım için teşekkürler.Ama bir sorun çıktı.
Bu hatayı alıyorum.Çözümü hakkında fikri olan varmı?

Fatal error: Declaration of ezSQL_mysql::query() must be compatible with that of ezSQLcore::query() in C:\AppServ\www\ez_sql\ez_sql_mysql.php on line 263

yakuter

yakuter
05 December 2009

Kullanmış olduğun ezsql dosyalarında sorun olduğunu düşünüyorum. Dosyaların birbiriyle uyumsuz olduğundan bahsediyor. Baştan kurup denerseniz sorun çözülür sanırım.

Ahmet

Ahmet
06 December 2009

Evet compatible olmadığını söylüyordu.Appsev i kaldırıp Xammp kurdum.Nedenini anlamadım ama düzeldi.Çok teşekkürler.

Muhittin

Muhittin
27 January 2010

Hocam herhangi bir sorgunun mysql_error() veya mysql_errno() fonksiyonlarında gibi hata çıktısını alma imkanımız varmı? Kendi sitesini ve birçok kaynağı taradım ama bulamadım. En olmadı kendim ekleyecem :)

tamer

tamer
05 February 2010

Varmı EZSQL gibisi

metin

metin
06 February 2010

arkadaşlar ben smarty ile beraber kullanıyorum falat get_result ile tpl ye foreach etmeye çalışınca hata alıyorum paket içinde smarty ile beraber kullanım anlatılmış fakat aynısını yapmama rağmen hata alıyorum :S

haber

haber
23 April 2010

teşekkürler, ezSQL class yapısı çok iyimiş, ona geçiriyorum sistemimi bende.

enc0der

enc0der
25 May 2010

tşk ederim hocam

Batın

Batın
04 August 2010

Birşey farkettim, Ezsql da arama sorgusu yaparken baslik='%$kelime %' şeklinde çektirdiğimde hata veriyor.Bu şekilde nasıl kullanabilirim ezsql ı

Hayata Dair

Hayata Dair
17 August 2010

ezsql ve smarty daha ne olsun.

Nurettin

Nurettin
03 December 2010

insert into kullandıgımda ' veya " işaretini kullandıgımızda sql sorgusu eklenmiyor. Kendi içinde çözümü varmı yoksa bizim mi yazmamız gerekiyor?

ümit

ümit
15 December 2010

Teşekkürler. Çok yararlı bir yazı olmuş. Veritabanından kayıt silmeye de bir örnek verseydiniz iyi olurdu.

serkan

serkan
01 April 2011

$db = new ezSQL_mysql($vt_kullanici,$vt_parola,$vt_isim,$vt_sunucu);

farklı sayfalarda classı tanımlamamız gerekirse yine bu db bilgilerini girilcekmi

yani başka bir sayfada

$data = new ezSQL_mysql();

ile oluşturamazmıyız

yavuz bayar

yavuz bayar
06 May 2011

bende eburhanın DBO class ını öğrenmeye çalışıyordum aralarında pek fark yok gibi. ayrıca CAChe desteğide var. yerli malı mı? avrupa mı? :)) hangisi sizce?

ugur sazan

ugur sazan
14 May 2011

Erhan Bey
Strict Standards: Declaration of ezSQL_mysql::query() should be compatible with that of ezSQLcore::query() in C:xampphtdocsezsqlmysqlez_sql_mysql.php on line 263
hatası alıyorum.
xamp server'ı yeniden kurdum-EasyPHP-5.3.6.0 denedim olmadı. Sorunu nasıl aşmalıyım.

Volkan AĞAOĞLU

Volkan AĞAOĞLU
17 November 2011

Ugur beyin sorununun aynısıyla bende karşılaştım nasıl çözebiliriz bi fikri olan var mı

KaanA

KaanA
20 May 2011

@serkan sorunun cevabı şöyle olabilir.Bir db.php dosyası oluşturusun.

$vt_kullanici = "kullanıcı";
$vt_parola = "parola";
$vt_isim = "isim";
$vt_sunucu = "sunucu(genelde localhost olur";
$db = new ezSQL_mysql($vt_kullanici,$vt_parola,$vt_isim,$vt_sunucu);

sonra sayfaya include edersin.Böylece sorunun çözülmüş olur.

izle

izle
28 December 2011

merhaba,

sorgu sunucu 0 geldiği zaman $db->get_results hata veriyor

nasil onleyebilirim??

saygilarimla

selcuk

selcuk
23 April 2012

Teşekkürler, çok yardımcı oldu.

webmaster

webmaster
14 November 2012

Teşekkürler, Çok ciddi derecede performans veren sınıflardan biridir EZSQL (Cache klasörünü arada bir boşaltın mutlaka, Yoksa siteniz de hatalar çıkabilir).

Özcan Aras

Özcan Aras
08 June 2013

Teşekkürler işime yaradı.

Wm-php

Wm-php
25 July 2013

Çoklu kayıt göstermede veri yok hatasını nasıl verdirtebiliriz?