Ben tam root erişimi olan özel bir sunucu (Ubuntu Sunucu 8.10) üzerinde PHP 5 ve MySQL 5 koşuyorum. Ben SQL çok sayıda yapının bu tür seçer ben miras ettik ve ben var bazı LAMBASI kod temizlik yapıyorum:
SELECT ... FROM table WHERE
LCASE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
strSomeField, ' ', '-'), ',', ''), '/', '-'), '&', ''), '+', '')
) = $somevalue
Veritabanı ilk etapta böyle bir seçme gerektiren inşa edilmiştir asla ve $ somevalue alan açılmakta güvenlik açığı takmak için Parametrelenecek gerekir gerçeğini görmezden gelerek, ne bir şey içine NEREDE durumunu tespit için en iyi seçenek az saldırgan? Ben MSSQL veya Oracle kullanılarak olsaydı ben sadece birlikte bir kullanıcı-tanımlı bir işlev koymak istiyorum, ama ben C kodlama mutluyum rağmen, MySQL ile benim deneyim daha sınırlı ve daha önce onunla bir UDF inşa ettik
Update: zaten orijinal kodu bu onların kaşlarını kaldırdı ettik herkes için, $ somevalue ['ürün'] GET aslında $ gibi bir şeydir-orada tema üzerine bir kaç varyasyon vardır. Bu durumda seçme ürün adı-sonra önce bir tanım parametre olarak geçirilen olabilir ne eşleşecek şekilde karakterleri sıyırma tarafından veritabanından geri ürün çekiyor.