Ее проблема, я думаю, ее действительно основной.
Я пытаюсь найти в базе данных, если строка существует. 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.'; }