php arama fonksiyonu

4 Cevap

Ben sitemde kullanıcı profilleri için bir arama fonksiyonu oluşturmak için çalışılıyor.

$search= $_POST['search'];
$res=mysql_query("SELECT * FROM ".TBL_USERS." WHERE username LIKE '$search%'");

Bu kullandığım koddur. Eğer sonucun başlangıcını eşleşen bir şey arama Bu sadece çalışır. Ben üst veya alt durumlarda kullanıcı adı regardingless parçası olarak yazdıklarınıza sahip değerleri döndürebilir herhangi bir yolu var mı?

Teşekkür

4 Cevap

"%" Joker olduğunu, bu yüzden de ({[) (0]} gibi) arama dizesi önüne koyun eğer $ username yerde arama maç olacak.

Harf duyarsız sonuçları almak için sorguyu yürütmek sonra, aynı yapmak için PHP adınızı küçük harf ve "strtolower" yapmak için SQL "ALT" kullanın.

Ve David Dorward dediği gibi: Eğer başka bir şey yapmadan önce bobby-tables.com okuyun!

Eğer gerçekten veri temizleme çeşit eklemek gerektiğini, bu verileri almak / ham post alır ve bir sorgu doğrudan takın asla.

O dedi:

$search= strtolower($_POST['search']);
$res=mysql_query("SELECT * FROM ".TBL_USERS." WHERE LOWER(username) LIKE '$search%'");

Eğer giriş iki tarafta% joker kullanabilirsiniz GİBİ kullandığınız gibi, bu $ arama adı parçası olan herhangi bir kullanıcı dönecektir.

Ayrıca MySQLs REGEXP function bakmak isteyebilirsiniz

$search= mysql_real_escape_string($_POST['search']);
$res=mysql_query("SELECT * FROM ".TBL_USERS." WHERE username LIKE '%" . $search . "%'");

Sen terimleri "SQL Injection" ve "PHP Hazırlayan Tablolar" hakkında okumak gerekir - Google onlar için ... Bu çok daha önemli bir soru sorulur olmasıdır.

Ama sormak beri, tüm üst durumda karşılaştırma deneyin ...

Martin.