MySQL / PHP Sorgulama

2 Cevap php

Ben bazı durumuna karşı kontrol etmek zorunda olduğu alanların 3 grup (her grup 2 alanlar oluşur) var. Ben her alanını kontrol, ancak bazı kombinasyonu, örneğin yok:

  1. grup priceEurBus, priceLocalBus
  2. grup priceEurAvio, priceLocalAvio
  3. grup priceEurSelf, priceLocalSelf

(Okunabilirliği için biçimlendirilmiş) Benim örnek - bu nasıl geliştirilebilir?

$rest .="
WHERE 
  (
    ((priceEurBus+(priceLocalBus / ".$ObrKursQuery.")) <= 400) 
    OR 
    ((priceEurAvio+(priceLocalAvio / ".$ObrKursQuery.")) <= 400) 
    OR
    ((priceEurSelf+(priceLocalSelf / ".$ObrKursQuery.")) <= 400)
  )
";

$ObrKursQuery Ben Euro yerel para birimi dönüştürmek için kullanabilirsiniz değerdir.

2 Cevap

Performans iyileştirme: Sizin sorgu OR, dayalı kısa sürede onları doğru olma birini bulur gibi koşulların değerlendirilmesi duracak anlam demektir. Örneğin, sizin durumunuzda, ilk onay 400'e altında olması çok muhtemeldir ki, böyle bir şekilde koşulları sipariş çalışın.

Güvenlik imporvement: hazırlanmış ifadeleri kullanın ve bunları kullanmadan önce değişkenleri filtre. Bir kullanıcı girişi veya güvenilmeyen bir kaynaktan gelirse $ ObrKursQuery durumunda, bu olmayan bir alıntı sayısal değeri ve aritmetik sql enjeksiyon dahil SQL enjeksiyon sorunları (büyük bir çeşitli maruz kalmaktadır: bu değer 0 ise , siz) bir kör SQL enjeksiyon koşulu olarak kullanılabilecek bir divideByZero hatası alırsınız.

Okunabilirlik imporvement: Her zaman size kod yazmak şekilde tutarlı olmak için emin olun ve eğer mümkünse, değişken adları küçük harf başlangıç ​​gibi, bazı kabul de facto standart izleyin: $ ObrKursQuery -> $ obrKursQuery. > $ ConversionRatio - $ ObrKursQuery: Ayrıca kendini belgeleyen kod uğruna, onlar ne anlama için değişken adlarını seçin.

İdame / Ölçeklenebilirlik gelişme:. Eğer gelecekte bu değeri değiştirdiğinizde 400 için yerine sabit bir değerde sabit kullanın, size ve tüm sizin kod üzerinde sadece tek bir yerde değiştirmek isteyeceksiniz.

Lütfen SQL oluşturmak için birleştirme kullanmak asla, sen parametreleri ile hazırlanan SQL ifadeleri kullanıyor olmalıdır.

Problem alanı daha fazla bilgiye sahip olmadan bu açıklamayı basitleştirmek için tek yolu sütun sayısını azaltmaktır. Eğer ürün girişi başına üç fiyatları var sanki görünüyor. Yerine ürün fiyatlarının sütunları ürün fiyatlarının bir tablo oluşturabilir ve bu tek bir karşılaştırma yapmak ve gelecekte daha da ürün fiyatlarını oluşturmak için esneklik verecek.

Yani ürün ve fiyatlar arasında bir-> çok ilişki oluşturmak gerekir.