她是我的问题,我猜它真的很基本。
我正在尝试在数据库中查找是否存在行。继承我的代码:
$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.';
}
问题是,当imm寻找“test”时,它表示不存在,即使我的数据库中有“Test”。
答案 0 :(得分:11)
尝试使用LIKE
代替=
:
$req="SELECT * FROM INSTITUTS WHERE `inst_name` LIKE '$fc_inst'";
答案 1 :(得分:9)
您可以使用LIKE
:
WHERE foo LIKE 'bar'
或者您可以使用以下两种方式转换小写:
WHERE LOWER(foo) = LOWER("bar")
LOWER()
示例最有效的地方是,您知道数据库中的所有数据都已经过低级,然后您就可以执行:
WHERE foo = LOWER("bar")
如果您可以小写数据库中的所有数据,这将比LIKE
更便宜。
答案 2 :(得分:4)
表格COLLATE设置
也可能存在问题即使使用LIKE运算符,此CREATE语句也会强制您的选择查询区分大小写:
CREATE
table instituts (inst_name VARCHAR(64))
CHARACTER SET latin1 COLLATE latin1_general_cs;
虽然这个会确保不区分大小写:
CREATE
table instituts (inst_name VARCHAR(64))
CHARACTER SET latin1
答案 3 :(得分:4)
你可以像其他人告诉你的那样使用“LIKE”解决它,但重要的是要知道区分大小写是由数据库中的排序规则决定的。例如,如果您选择排序规则utf8_general_ci ...末尾的“ci”表示“不区分大小写”,因此您将来进行的比较将不区分大小写。
简而言之:您必须小心选择的排序规则。
答案 4 :(得分:3)
如果您想要区分大小写选择,可以使用MD5()比较:
$req="SELECT * FROM INSTITUTS WHERE MD5(inst_name)=MD5('$fc_inst')";
当然你消耗了一点服务器的cpu,但它比那些无聊的校对要简单得多。
答案 5 :(得分:0)
尝试:
$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.';
}
答案 6 :(得分:0)
您可以在查询中使用LIKE BINARY。.
赞:
SELECT *从
table_name
在column_name
的地方,例如BINARY'search_string'
这将检查区分大小写的“ search_string”数据