Ana Sayfa » »
Tem
26
2013

WordPress $wpdb Sınıfı: DELETE (Silme) İşlemleri

WordPress veritabanı sınıfını anlattığım serinin bu dördüncü bölümünde, veritabanında var olan bir kaydın, $wpdb sınıfı ile nasıl silineceğini anlatacağım. Normalde bu işlem için sınıfın query() fonksiyonunu kullanıp, bir DELETE SQL sorgusunu çalıştırmak yeterlidir, ancak güvenlik açısından bu iş için özelleştirilmiş delete() fonksiyonunu kullanmak yerinde olacaktır.

delete() Fonksiyonu ile Veritabanındaki Kayıtları Silme İşlemi

Bu fonksiyonun kullanımı genel olarak $wpdb->update( $tabloadi, $koşul, $koşulbiçimleri); şeklinde olup, toplam 3 parametre alır. Bu parametreler sırasıyla, silme işleminin yapılacağı tablo adı, silinecek kaydı bulmak için kullanılacak WHERE koşulu ve son olarak ise WHERE koşulu içerisindeki değerlerin veri türü'dür. Aşağıdaki örnek 15 nolu yazının imdb puanı özel alanını siler.

<?php
   $postmeta = $wpdb->delete($wpdb->postmeta, array ("post_id" => 15, "meta_key" => "imdb_puani), array("%d", "%s"));

//Kodun eşdeğeri aşağıdaki sorguyu çalıştırmakla aynı olacaktır.
//DELETE FROM $wpdb->postmeta WHERE post_id = 15 AND meta_key = 'imdb_puani';

?>

Gördüğünüz gibi fonksiyon ile kolayca bir kaydı silmek mümkün. Ancak SQL'de DELETE fonksiyonu tehlikeli fonksiyonlardan biridir, eğer WHERE kısmını doğru bir şekilde belirtmezseniz, veritabanında istemediğiniz kayıtları silebilirsiniz Bu nedenle özellikle WHERE ifadesini oluştururkan iki kere kontrol edin.
Parametrelerde değer olarak sayısal, metinsel ve ondalıklı sayı değerleri kullanılabilir, bunların doğrulaması için ise sırasıyla %d, %s ve %f ifadeleri kullanılır.

Bu yazımı beğendiyseniz, bu kategoride yer alan WordPress $wpdb Sınıfı: UPDATE (Güncelleme) İşlemleri başlıklı fonksiyon, query ve sql konularında bilgi veren bir önceki yazımı da okumanızı tavsiye ederim.

Yazıya 6 Yorum Yapıldı+ Yorum Ekle

  • Kod hatalı. update için verilen kodu yazmışsınız

    • Kodu düzelttim, uyarınız için teşekkürler.
      Yazıyı, diğerleriyle benzer olsun diye kopyala/yapıştır yapmıştım. O kısmı düzelttiğimi sanıyordum, ya kaydetmeyi unutmuşum ya da düzeltmeyi.

  • Konuyla çok alakası yok ama birşey sormak istiyorum, wp teması içinde oluşturduğum harici php sayfasında wp veritabanı bağlantısını kurmak config.php dosyasını include ediyorum. Bunun alternatif ve daha güvenli yolu var mıdır?

    • PHP ile mysql veritabanı kullanma bilginiz ne kadar bilmiyorum ama eğer harici php sayfasını sadece kendi sitenizde kullanmak için oluşturuyorsanız, klasik şekilde mysql_connect('kullanıcı adı', 'şifre', 'veritaban adı'.... şeklindeki mysql fonksiyonlarını kullanarak işinizi halledebilirsiniz. Ancak harici dosyanızda WordPress fonksiyonlarını da kullanmak istiyorsanız, tek yöntemi zaten wp-config.php dosyasını include etmektir. Güvenli yol derken, bu yöntemin nasıl bir güvenlik problemi olduğunu düşünüyorsunuz?

      • wp teması içinde harici bir php sayfa oluşturdum. Wp'ni veritabanında bir tablo oluşturdum. Bu sayfada yapılan ekleme, silme işlemleri için wp'nin veritabanına bağlanıp oluşturduğum tabloya veri eklemesini/silmesini sağlamak istiyorum. mysql_connect komutunu kullanmadım sadece wp-config'i include ederek yaptım o bağlantıyı. Bu bir sıkıntı yaratır mı onu anlamak istiyorum sadece

      • Eğer scripti sadece siz kullanacaksanız kesinlikle sorun olmaz, piyasadaki tüm harici araçlar, botlar vs. bu yöntemi kullanır. Dikkat etmeniz gereken, kaydederken güvenli bilgileri kaydettiğinizden emin olun. Eğer scriptinizi sadece siz kullanacaksanız ve başkalarının ulaşması mümkün değilse sorun olmaz.
        Aslında diğer durumda da, mysql fonksiyonlarını kullanmanızdansa WP fonksiyonlarını kullanmanız güvenliği artıracaktır, WP fonksiyonları girilen bilgilerin çoğunu filtrelemektedir. Ancak siz yine de veritabanına kaydedilecek bilgilerin güvenli olduğundan emin olun.

Yorumunu Yaz

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Yukarı Çık