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

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

<?php

//ezSQL çekirdegini dahil ediyoruz.
include_once "ez_sql_core.php";

// ezSQL veritabani bilesenini cagiriyoruz.
include_once "ez_sql_mysql.php";

// veritabanin ayarlarini yapiyoruz.
$vt_kullanici="root";
$vt_parola="";
$vt_isim="bilgiler";
$vt_sunucu="localhost";

// ezSQL sinifini cagirarak calistirmaya basliyoruz.
$db = new ezSQL_mysql($vt_kullanici,$vt_parola,$vt_isim,$vt_sunucu);
?>
Ö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.

CREATE TABLE `bilgi_tablosu` (
  `no` int(11) NOT NULL,
  `isim` varchar(100) NOT NULL,
  `soyisim` varchar(100) NOT NULL,
  `rumuz` varchar(100) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `bilgi_tablosu` (`no`, `isim`, `soyisim`, `rumuz`) VALUES
(1, 'Erhan', 'Yakut', 'yakuter'),
(2, 'Hakan', 'Demiray', 'dmry'),
(3, 'Erhan', 'Burhan', 'eburhan'),
(4, 'Hamdi', 'Yaman', 'h-yaman');
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

<?php
$sonuclar = $db->get_results("SELECT isim FROM bilgi_tablosu");
foreach ( $sonuclar as $sonuc )
{
	echo $sonuc->isim.",";
}
// Çıktı
/* Erhan,Hakan,Erhan,Hamdi, */
?>

Örnek 2)Tek satırdaki bilgileri çekme

<?php
$satir = $db->get_row("SELECT no,isim,soyisim FROM bilgi_tablosu WHERE no = '2' ");
echo $satir->no.") ".$satir->isim." ".$satir->soyisim;
// Çıktı
/* 2) Hakan Demiray */
?>

Örnek 3)Tek bir bilgiyi çekme

<?php
$kisi_sayisi = $db->get_var("SELECT count(*) FROM bilgi_tablosu");
echo "Kişi sayısı: ".$kisi_sayisi."<br>";

$sonuc = $db->get_var("SELECT soyisim FROM bilgi_tablosu WHERE no='3' ");
echo "3. kaydın soyismi ".$sonuc;
// Çıktı
/* Kişi sayısı: 4
3. kaydın soyismi Burhan */
?>

Örnek 4)Tabloya kayıt girme

<?php
$db->query("INSERT INTO bilgi_tablosu (no, isim, soyisim, rumuz) VALUES ('5','Veysel','Semiz','sanalduvar')");

// Çıktı
/* Bu islem sonucunda tabloya sırasıyla '5 Veysel Semiz sanalduvar' seklinde bir kayıt girilir. */
?>

Örnek 5) Kayıt güncelleme

<?php
$db->query("UPDATE bilgi_tablosu SET isim = 'Hamdicim' WHERE no = '4'");

// Çıktı
/* Bu islem sonucunda tabloda 'no' hanesi '4' olan satırdaki 'isim' değeri 'Hamdicim' olarak değiştirilir.*/
?>

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

<?php
$db->query("UPDATE bilgi_tablosu SET isim = 'Hamdicim' WHERE no = '4'");
$db->debug();

// Çıktı
/*     ezSQL (v2.03) Debug..
    Query [5] -- [UPDATE bilgi_tablosu SET isim = 'Hamdi' WHERE no = '4']
    Query Result..
        No Results*/
?>

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

<?php
$sonuclar = $db->get_results("SELECT * FROM bilgi_tablosu WHERE no='1'");
$db->vardump($sonuclar);

// Çıktı
/* Array
(
    [0] => stdClass Object
        (
            [no] => 1
            [isim] => Erhan
            [soyisim] => Yakut
            [rumuz] => yakuter
        )

)
*/
?>

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

<?php
$sonuclar = $db->get_col("SELECT rumuz FROM bilgi_tablosu",0);
foreach ( $sonuclar as $sonuc )
{
	echo $sonuc.",";
}

// Çıktı
/* yakuter,dmry,eburhan,h-yaman, */
?>

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

<?php
foreach ( $db->get_col("SELECT rumuz FROM bilgi_tablosu",0) as $sonuc )
{
	echo $sonuc.",";
}

// Çıktı
/* yakuter,dmry,eburhan,h-yaman, */
?>

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

<?php
$db->select("bilgiler");
foreach ( $db->get_col("SHOW TABLES",0) as $tablo_ismi )
{
	$db->debug();
	$db->get_results("DESC $tablo_ismi");
}
$db->debug();

// Çıktı
/* Veritabanının şema halinde çıktısını verir */
?>
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.

Benzer Yazılar

yakuter

Erhan Yakut

www.yakuter.com

Genç yaşlarda programlama ile tanıştı ve Delphi ile başladığı programlama macerasına şuanda PHP, SQL, Javascript, AJAX, CSS, XHTML teknolojileri ile devam etmektedir. Elektrik - Elektronik bölümü mezunu olan "yakuter" 2006 yılından itibaren yakuter.com'un yazarlığını yapmaya başlamıştır.

Bu Yazıya Ait Yorumlar

brsyuksel

brsyuksel
05 Temmuz 2008

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

yakuter

yakuter
05 Temmuz 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 Temmuz 2008

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

Mustafa

Mustafa
06 Temmuz 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 Temmuz 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 Temmuz 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 Temmuz 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 Temmuz 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 Temmuz 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 Temmuz 2008

teşekkür ederim yakuter

Onur

Onur
24 Temmuz 2008

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

Semih

Semih
02 Haziran 2009

peki bunu smarty’le nasıl yapabiliriz?

yakuter

yakuter
08 Haziran 2009

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

Gökhan

Gökhan
13 Temmuz 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 Ekim 2009

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

Ahmet

Ahmet
05 Aralık 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 Aralık 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 Aralık 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 Ocak 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 Şubat 2010

Varmı EZSQL gibisi

metin

metin
06 Şubat 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 Nisan 2010

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

enc0der

enc0der
25 Mayıs 2010

tşk ederim hocam

Batın

Batın
04 Ağustos 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 Ağustos 2010

ezsql ve smarty daha ne olsun.

Peki ya sizin düşünceleriniz?

Facebook Grubumuz Twitter Wordpress Linked in Google Friendfeed RSS Beslemesi Feedburner RSS

Abonelik

Yazılan yazılardan ilk siz haberdar olun, yeni yazılar e-postanıza gönderilsin.

yakuter.com © 2006-2010 Erhan Yakut. Site tasarım Cenk Akyıldız - (Tema Bilgisi). Hosting sponsoru WebGrup.
Site içerisindeki içerikler izinsiz kopyalanamaz, alıntı yapılamaz.

WordPressValid XHTML 1.0 TransitionalBu web sitesi ne kadar popüler?php