EZSQL VERİTABANI SINIFININ KULLANIMI

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.

DEVAMINI OKUYUN
  • brsyuksel

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

  • 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

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

  • 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

  • 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.

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

  • @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

    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 ?

  • @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

    teşekkür ederim yakuter

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

  • peki bunu smarty’le nasıl yapabiliriz?

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

  • Gökhan

    @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.

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

  • Ahmet

    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

    • 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

    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

    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

    Varmı EZSQL gibisi

  • metin

    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

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

  • tşk ederim hocam

  • Batın

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

  • ezsql ve smarty daha ne olsun.

  • 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

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

  • serkan

    $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

    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

    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

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

  • KaanA

    @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

    merhaba,

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

    nasil onleyebilirim??

    saygilarimla

  • selcuk

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

  • 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

    Teşekkürler işime yaradı.

  • Wm-php

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