如何使PHP/MySQL中的SELECT不区分大小写?

Clé*_*ent 8 php mysql

她是我的问题,我猜它真的很基础.

我正在尝试在数据库中查找是否存在行.继承我的代码:

$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.';
}
Run Code Online (Sandbox Code Playgroud)

问题是,当imm寻找"测试"时,它表示不存在,即使我在我的数据库中有"测试".

Nea*_*eal 11

尝试使用LIKE而不是=:

$req="SELECT * FROM INSTITUTS WHERE `inst_name` LIKE '$fc_inst'";
Run Code Online (Sandbox Code Playgroud)


Jam*_*s C 9

你可以使用LIKE:

WHERE foo LIKE 'bar'
Run Code Online (Sandbox Code Playgroud)

或者您可以使用以下两种方式转换小写:

WHERE LOWER(foo) = LOWER("bar")
Run Code Online (Sandbox Code Playgroud)

LOWER()如果您知道数据库中的所有数据已经​​较低,那么示例最有效,然后您可以执行:

WHERE foo = LOWER("bar")
Run Code Online (Sandbox Code Playgroud)

这比LIKE你可以小写数据库中的所有数据更便宜.


ste*_*rie 5

您的表 COLLATE 设置也可能有问题

即使使用 LIKE 运算符,此 CREATE 语句也将强制您的选择查询区分大小写:

CREATE
  table instituts (inst_name VARCHAR(64))
  CHARACTER SET latin1 COLLATE latin1_general_cs;
Run Code Online (Sandbox Code Playgroud)

而这将确保不区分大小写:

CREATE
  table instituts (inst_name VARCHAR(64))
  CHARACTER SET latin1
Run Code Online (Sandbox Code Playgroud)

  • 这可能是最明智的答案。 (2认同)