Durumda duyarlı php sorgusu

3 Cevap php

Ben bir kayıt formu yapmayı deneyin. Kullanıcı alanları zaman sonrası, ben USER_NAME edin. MYSQL satırda İnster hiçbir zaman yoksa.

Yazılan sonra:

$check = "SELECT name FROM test WHERE name='".$_POST['user_name']."';  
 $result = mysql_query($check) or die (mysql_error()); 
 $numrows = mysql_num_rows($resutl);
 if ($numrow != 0){ 
     echo "exist"; exit;    	   
 }else{ 
     insert.....
 }

Veritabanında i user_name = Testi ile bir satır var

Yayınlanmıştır değer Testi i ise "test" ya da "test" ya da başka bir şey sonrası eğer, o zaman tamam, ama, sonra satır iserted.

Nasıl duyarsız harfe yapabilir? Ben yayınlanmıştır değeri küçük harfe str kullanmak gerektiğini düşünüyorum, ama sorguda .. ben bunu nasıl yapabilirim?

Teşekkür ederim

3 Cevap

Senin alanın harmanlama bir harf duyarsız (örneğin {[) (0]} veya latin1) bir, bir harf duyarsız yapmak için LIKE operatörünü kullanabilirsiniz ise maç.

"SELECT * FROM test WHERE name LIKE '$username';"

try SELECT name FROM test WHERE UPPER(name)='".strtoupper($_POST['user_name'])."'

doğru (php bakın mysql_real_escape_string function) yayınlanmıştır adı kaçmak gerektiğini unutmayın

Harf duyarlılığı da sütunun veri türüne bağlıdır. Muhtemelen dize dönüşüm (yani UPPER() ve strtoupper()) VARCHAR sütun türünü değiştirerek ekstra yükü olmadan sorunu çözebilirsiniz.

From the MySQL Manual:

Nonbinary dizeleri (CHAR, VARCHAR, METİN), dize arama karşılaştırma işlenen harmanlama kullanın. Ikili dizeleri (İKİLİ, VARBINARY, BLOB), karşılaştırmalar işlenenler de bayt sayısal değerler kullanın; Bu alfabetik karakterler için, karşılaştırmalar harf duyarlı olacağı anlamına gelir.

Bir nonbinary dize ve ikili dize arasında bir karşılaştırma ikili dizeleri bir karşılaştırma olarak kabul edilir.

Aynı sıralama değeri ile basit bir karşılaştırma işlemleri (> =,> =, <, <=, sıralama ve gruplandırma) Her karakterin dayanan "sort değer." Karakterler aynı karakter olarak kabul edilir. "E" ve "é" belirli bir harmanlama aynı sıralama değeri varsa, örneğin, bunlar eşit karşılaştırın.