03 Temmuz 2007

WordPress'in Veritabanı Sınıfı ve Kullanımı

WordPress Yorum Ekle

WordPress bütün veritabanı işlemleri için Justen Vincent tarafından yazılmış olan ezSQL veritabanı sınıfı tabanlı ve $wpdb olarak fonksiyonlarda çağrılan bir sınıf kullanmaktadır. wpdb sınıfının kullanımı ezSQL sınıfının kullanımından fazla da farklı değil. Gerçekten güçlü bir sınıf olan ezSQL ile ilgili ayrıntılı bilgiye benim yazdığım makale'den ya da buradan (İngilizce) ulaşabilirsiniz.
wpdb Sınıfının Kullanımı
WordPress'de yazacağınız eklentilerdeki fonksiyonlarda veritabanı işlemleri yapacaksanız, wpdb sınıfını global olarak tanımlamanız gerekmektedir. Bunu ise fonksiyonun en üstüne global $wpdb; yazarak yapabilirsiniz.
query Veritabanında sorgu yapma fonksiyonu
WP'nin veritabanı üzerinde herhangi bir SQL sorgusunu gerçekleştirmek için kullanabilirsiniz.
Kullanımı:
$wpdb->query('SQL cümlesi');
Sorgulama sonucunda eğer herhangi bir sonuç oluşursa, fonksiyon etkilenen kayıtlarla ilgili integer türünde bir değer döndürür ve sorgu sonucunu diğer fonksiyonların kullanabilmesi için kaydeder. Eğer herhangi bir sonuç yoksa fonksiyon "0" değerini döndürecektir. Eğer bir MySQL hatası oluşmuşsa, fonksiyon FALSE sonucunu döndürür.
Eğer bu fonksiyon ile veritabanında kayıtlar üzerinde değişiklik (ekleme/silme/düzenleme) yapmak isterseniz, SQL injeksiyon saldırılarına karşı wpdb->escape($kullanıcının_girdiği_veri) metodunu kullanabilirsiniz. Böylece özellikle metin türündeki verilerde zararlı kodları etkisizleştirebilirsiniz.
Örnek Kullanımlar:
ID'si 2 olan kategoriye ID'si 13 olan yazıyı ekler.
$wpdb->query("INSERT INTO $wpdb->post2cat (post_id, category_id) VALUES (13, 2)");
ID'si 13 olan yazıyı siler.
$wpdb->query("DELETE FROM $wpdb->posts WHERE post_id = '13'");
ID'si 15 olan kategorinin ismini WordPress olarak değiştirir.
$wpdb->query("UPDATE $wpdb->categories SET cat_name = 'Wordpress' WHERE cat_ID = 15");
Aşağıdaki kod ile ipucu isimli bir tablo oluşturmuş olduk. Özellikle eklenti yazarken, eklentinin etkinleştirme işlemi sırasında tabloları oluşturmak için kullanılmaktadır.
$wpdb->ipucu = $wpdb->prefix . 'ipucu';
$db_sql="CREATE TABLE IF NOT EXISTS `$wpdb->ipucu`(`id` bigint(20) NOT NULL auto_increment, `ipucumetin` text NOT NULL, PRIMARY KEY (`id`))";
$wpdb->query($db_sql);

get_results : SELECT sql komutu sonuç fonksiyonu
Yapılan SQL sorgusu sonuçlarını bir dizi halinde tutar. Dizinin her satırı sorgu sonucunda dönen kayıtları gösterir. Dönen sonuçlara birer nesne gibi ulaşabilirsiniz.
Kullanımı:
$wpdb->get_results('SQL Cümlesi');
Örnek Kullanımlar:
ipucu adlı tablodaki bütün kayıtların ipucumetni alanlarını görüntüler.

  1. <?php
  2. //Tablomuzun adını, prefix'e bağlı olarak $wpdb->ipucu
  3. //haline getiriyoruz
  4. $wpdb->ipucu = $wpdb->prefix . 'ipucu';
  5. $sonuclar = $wpdb->get_results("SELECT ID, ipucumetni
  6. FROM $wpdb->ipucu order by id desc");
  7.  if ($sonuclar) {
  8.    foreach ($sonuclar as $sonuc) {
  9.     echo $sonuc->ipucumetni;
  10.     echo "<br />";
  11.    }
  12.  }
  13. ?>

get_row: Bir satırlık sonuca ulaşmak
Yapılan sorgu sonucunda bir satırlık bir kaydın dönmesini bekleniyorsa, bu kayda ulaşmak için kullanılır.
Kullanımı:
$wpdb->get_row('SQL Cümlesi');
Örnek Kullanımlar:
ipucu adlı tablodaki ID'si 2 olan kaydı görüntüler.

  1. <?php
  2. $sonuc = $db->get_row("SELECT id, ipucumetni
  3. FROM $wpdb->ipucu WHERE id=2");
  4. echo $sonuc->id;
  5. echo $sonuc->ipucumetni;
  6. ?>

get_var : Sorgu'dan değer almak
Yapılan sorgudan tek bir değerin alınması için kullanılır.
Kullanımı:
$wpdb->get_var('SQL Cümlesi');
Örnek Kullanımlar:
İpucu sayısını verir.
$var = $db->get_var("SELECT count(*) FROM $wpdb->ipucu");
echo $var;

Bu yazıyı, WordPress'de veri tabanı kullanabilecek eklenti yazma konusuyla ilgili anlatacağım ikinci yazıma hazırlık amacıyla hazırladım. Buradaki fonksiyonlar eklenti yazarken hemen hemen bütün işimizi görecektir. Bu nedenle fazla ayrıntıya girmek istemedim. Yok, ben daha fazla bilgi istiyorum diyorsanız ezSQL ile ilgili yazdığım yazıyı inceleyerek, orada anlattığım fonksiyonları da kullanabilirsiniz.
Eklenti yazma ile ilgili yazıma buradan ulaşabilirsiniz.


Bu yazının kısa bağlantısı http://www.yakupgovler.com/?p=66.

Yazılarımı RSS aboneliği ile takip edebilir, yeni yazılarıma kolaylıkla ulaşabilirsiniz. Bunun için ise RSS adresimi kullanabilirsiniz.


“WordPress’in Veritabanı Sınıfı ve Kullanımı” yazısı için 6 Yorum

Bu yazıya yapılan yorumları dilerseniz, ( RSS 2.0 ) beslemesini kullanarak takibe alabilirsiniz.

  1. yakuter » ezSQL Sınıfının Kullanımı dedi ki:

    [...] 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 [...]

  2. ozlemyeri dedi ki:

    paylasım ıcın tesekkurler

  3. Bildir Genc - » ezSQL Veritabanı Sınıfının Kullanımı dedi ki:

    [...] 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. Bildir: ezSQL, kod, MySQL, Php, programlama, [...]

  4. kemal dedi ki:

    Yakup hocam bu güzel paylaşımınız için teşekkürler. Sayenizde wp ye eklenti yazabileceğiz.

    Mesleki hayatınızda başarılar diliyorum.

    Selamlar.

  5. Bildirgenc İçeren Yazılar « Son Sitem dedi ki:

    [...] · Bilgiligenc.İnfo · Tourism · Hekimturk.Com · Myblogcu. … http://www.attler.net/ - WordPress’in Veritabanı Sınıfı ve Kullanımı · Yakup Gövler’in Not … Bildir Genc - » ezSQL Veritabanı Sınıfının Kullanımı dedi ki: Tarih:  Ağustos  Saat: :. [...]

  6. WPDB Sınıfı: Sorgulama · Yakup Gövler'in Not Defteri dedi ki:

    [...] bu sınıf ile ilgili önceden yazdığım yazıya buradan ulaşabilirsiniz. Kaynak Yazıyı Paylaş: Aşağıdaki simgeler kullanıcılarının web [...]