Wpdb-> insert önce wpdb hazırlık kullanmam gerekir mi?
Wpdb-> insert kullanarak bir wordpress tablosuna değerler ekliyorsam, eklemeden önce verilerimi "temizlemem" gerekir mi yoksa bu yöntem (wpdb-> insert) bunu benim için yapıyor mu?
Wpdb-> insert önce wpdb hazırlık kullanmam gerekir mi?
Wpdb-> insert kullanarak bir wordpress tablosuna değerler ekliyorsam, eklemeden önce verilerimi "temizlemem" gerekir mi yoksa bu yöntem (wpdb-> insert) bunu benim için yapıyor mu?
Yanıtlar:
Hayır, verileri hazırlamamalı ya da bu bilgilerden kaçmamalısınız wpdb
.
Gönderen wpdb sınıf referansı :
veri :
(dizi) Eklenecek veriler (sütun => değer çiftlerinde). Hem $ veri sütunları hem de $ veri değerleri "raw" olmalıdır (ikisi de SQL'den kaçmamalıdır).
Bununla birlikte, insert
yöntemi kullanmak yerine kendi SQL'inizi yazıyorsanız , evet, kullanarak kaçmalısınız prepare
.
Aşağıdaki wpdb sınıfı için bir uyarıdır.
https://codex.wordpress.org/Class_Reference/wpdb
Bir uyarı
Bu sınıftaki bazı işlevler girdi olarak bir SQL ifadesi alır. SQL enjeksiyon saldırılarını önlemek için SQL sorgusuna dahil ettiğiniz tüm güvenilir olmayan değerlerden kaçmanız gerekir. Kullanmayı planladığınız işlevin sizin için SQL'den kaçtığını veya kaçmasını beklediğini görmek için belgelere bakın.
Bu yüzden bunu okudum - wpdb sınıfı sizin için verileri otomatik olarak hazırlamıyor veya kaçmıyor.
Kodunuzdaki veri kaynağına% 100 güvenemiyorsanız, sınıf (?) 'I kullanmanızı öneririm.
Hazırlık sınıfını kullanmanın, hazırlık sınıfını düzgün kullanmadan düzelteceğini düşünmeyin. Bu konuda oldukça yeniyim, bu yüzden doğru değilsem lütfen herhangi bir düzeltmeyi yanıt olarak gönderin.
$ wpdb-> ready ("SELECT * FROM tablo NEREDEN ID =% d AND name =% s", $ id, $ name);
Yukarıdaki açıklamada, 2 ekstra özellik vardır. Biri kimlik için, diğeri de ad için. Okuduğum kadarıyla, her biri sorgunuzdaki öğe sayısına karşılık gelir. Ayrıca% s = string,% d = integer ve% f = float.
Ayrıca, okumalarımdan, eğer ekstra özellikleri koymazsanız, hazırlayın aslında hiçbir şey yapmaz. Bir uyarı olacak, ancak bunu kapatırsanız, belki de bilemezsiniz.
Aşağıda, bir INSERT öğesine bir hazırlık sınıfı ekledikleri sınıf referansının kendisinden bir örnek verilmiştir.
https://codex.wordpress.org/Class_Reference/wpdb#Protect_Queries_Against_SQL_Injection_Attacks
$ wpdb-> query ($ wpdb-> hazırla ("INP $ wpdb-> postmeta (post_id, meta_key, meta_value) DEĞERLER (% d,% s,% s)", dizi (10, $ metakey, $ metavalue) ));
Benim endişem, 'kimsenin' referans vermediği aynı sayfaya göre yükseltilmiş cevabın yanlış olması. Ben hazırla () kullandığınızı varsayıyorum ama diğer standart php kaçış yöntemleri değil çünkü ben daha derin kazdık kadar ben de bu yanıtı doğru aldı.
Her neyse ... belki de orijinal cevaptan bu yana işler değişti.
$wpdb->insert()
$ Wpdb-> update () ` gibi işlevler kullandığınızda veya $wpdb->delete()
verilerin RAW olması gerekir. Örneğin $wpdb->query()
SQL deyimini girdi olarak kullandığınızda, güvenilmeyen verilerden kaçmalısınız.
Hayır wpdb insert veya wpdb delete - kullanırken SQL enjeksiyonlarına karşı önlem gerekmez.
Aşağıdaki bağlantılara bakın:
https://codex.wordpress.org/Data_Validation#Database
https://codex.wordpress.org/Class_Reference/wpdb#Protect_Queries_Against_SQL_Injection_Attacks
insert
&update
buna gerek yok. Ancak ile birlikte kullanılmalıdırquery
.