Как сделать SELECT в PHP / MySQL нечувствительным?

Ее проблема, я думаю, ее действительно основной.

Я пытаюсь найти в базе данных, если строка существует. heres мой код:

$req="SELECT * FROM INSTITUTS WHERE inst_name='$fc_inst'"; $result=mysql_query($req) or die ('Erreur :'.mysql_error()); if (mysql_num_rows($result)){ echo ' name exist'; } else { echo ' does not exist.'; } 

Проблема в том, что, когда он ищет «тест», он говорит, что не существует, даже если у меня есть «Тест» в моей базе данных.

вы можете использовать LIKE :

 WHERE foo LIKE 'bar' 

Или вы можете использовать строчные буквы:

 WHERE LOWER(foo) = LOWER("bar") 

Пример с LOWER() наиболее эффективен там, где вы знаете, что все ваши данные в базе данных уже сведены ниже, а затем вы можете просто выполнить:

 WHERE foo = LOWER("bar") 

Это было бы более дешевое сравнение, чем LIKE если вы можете опустить все данные в своей базе данных.

Попробуйте использовать LIKE вместо = :

 $req="SELECT * FROM INSTITUTS WHERE `inst_name` LIKE '$fc_inst'"; 

Это также может быть проблемой при настройке таблицы COLLATE

Этот оператор CREATE заставит ваши запросы выбора быть чувствительными к регистру даже при использовании LIKE-операторов:

 CREATE table instituts (inst_name VARCHAR(64)) CHARACTER SET latin1 COLLATE latin1_general_cs; 

В то время как этот обеспечит нечувствительность к регистру:

 CREATE table instituts (inst_name VARCHAR(64)) CHARACTER SET latin1 

вы можете решить это, используя «LIKE», как вам говорили другие люди, НО важно знать, что чувствительность к регистру определяется путем сортировки в базе данных. Например, если вы выберете сортировку utf8_general_ci …, то «ci» в конце означает «нечувствительность к регистру», поэтому сравнения, которые вы будете делать в будущем, будут нечувствительны к регистру.

В нескольких словах: вы должны быть осторожны в выборе сортировки.

Вы можете использовать сравнение MD5 (), если вы хотите выбрать чувствительный к регистру :

 $req="SELECT * FROM INSTITUTS WHERE MD5(inst_name)=MD5('$fc_inst')"; 

конечно, вы потребляете немного процессорного сервера, но это намного проще, чем эти скучные сопоставления.

Пытаться:

 $req="SELECT * FROM INSTITUTS WHERE UCASE(inst_name)=UCASE('$fc_inst')"; $result=mysql_query($req) or die ('Erreur :'.mysql_error()); if (mysql_num_rows($result)){ echo ' name exist'; } else { echo ' does not exist.'; }