17 Nisan 2009

WPDB Sınıfı: Sorgulama

WordPress Yorum Ekle

WPDB sınıfı WordPress'in veritabanıyla ilgili işlemleri yapmada kullandığı bir sınıf. Eklentilerinizi yazarken eğer veritabanını kullanacaksanız mutlaka bu sınıfı iyi bilmeli ve doğru şekilde kullanabilmelisiniz. Bu yazı serisinde bu sınıfla sırasıyla Sorgulama, Seçme, Ekleme ve Güncelleme işlemlerinin nasıl yapılacağını anlatacağım.
Bu sınıf WordPress API'ye ait bir sınıf olup, içerisinde MySQL veritabanıyla ilgili çeşitli işlemleri kolay ve mümkün olduğunca güvenli bir şekilde yapmanızı sağlar.
Sınıf, WP içerisinde $wpdb sınıf örneğiyle sunulmaktadır. Eğer bu sınıfı kendi fonksiyonlarınızda kullanacaksanız bu değişkeni fonksiyonunuz içinde global olarak tanımlamanız gerekir. Bunu fonksiyonunuzun başında aşağıdaki gibi bir ifade ile yapabilirsiniz.

  1. function sizin_fonksiyonunuz() {
  2. global $wpdb;
  3. //diğer kodlarınız.
  4. }

Şimdi de örneklerle, sınıfı kullanarak nasıl sorgulama yapabileceğimizi görelim.

Sorgulama Yapma

WordPress API'nin fonksiyonlarını kullanarak sorgu yapmak, mysql_query() fonksiyonu ile sorgu yapmaktan daha iyidir. Sorgu olarak istediğiniz SQL sorgusunu kullanabilirsiniz. Aşağıdaki örnekle bir sorguyu nasıl yapabileceğinizi görebilirsiniz.

  1. $sorgu = "SELECT * FROM tabloadi";
  2. $wpdb->query($sorgu);

Tabiki sorgu sonucunu isterseniz bir değişkene aktarabilirsiniz. Sorgu sonunda eğer etkilenen bir satır yoksa fonksiyon 0 değerini döndürecektir. Eğer bir MySQL hatası meydana gelmişse bu durumda FALSE sonucu döner. Buna göre kodlarınıza yön verebilirsiniz. Yapılan sorgu sonucunda bir bilgi dönüyorsa bunlar geçici olarak $wpdb->last_results değişkeninde tutulurlar.

Güvenli Sorgu Yapmak

SQL sorgusu yapmadan önce güvenliği sağlamak için bazı önlemler almamız gerekir. Ancak $wpdb->prepare fonksiyonunu kullanarak güvenli sorgular oluşturmak mümkün. Aşağıdaki örnek güvenli bir sorgunun nasıl yapılabileceğini gösteriyor.

  1. $wpdb->query( $wpdb->prepare("
  2. INSERT INTO $wpdb->postmeta
  3. ( post_id, meta_key, meta_value )
  4. VALUES ( %d, %s, %s )",
  5. 10, $metakey, $metavalue) );

$wpdb->prepare fonksiyonu sorgu içerisindeki %s ile metinsel bir değeri, %d ile ise sayısal bir değeri yer değiştirir. Yukarıdaki kodda $metakey değişkeninin değeri 'image', $metavalue değişkeninin değeri 'deneme.jpg' olduğunu varsayarsak, $wpdb->prepare fonksiyonu aşağıdaki gibi bir sorgu cümlesi oluşturur.

  1. $wpdb->query("INSERT INTO $wpdb->postmeta
  2. ( post_id, meta_key, meta_value )
  3. VALUES ( 10, 'image', 'deneme.jpg' )");

Ayrıca bu sınıf ile ilgili önceden yazdığım yazıya buradan ulaşabilirsiniz.
Kaynak


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

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