PHP对MySQL案例敏感

时间:2015-05-12 09:39:26

标签: php mysql

我知道之前已经问过这个问题。但似乎没有什么对我有用。

所以我在下面有这个代码。我想要做的是在数据库中搜索表product_description并获取列name(此部分到目前为止有效)。列名称的排序规则为utf8_general_ci

   $SearchWord1 = "Squirl";
   $ExistingWord1 = "Banana";
   $ReplacerWord1 = "Orange";

我有3个产品:

name: SQUIRL banana pie
name: Squirl BANANA pie
name: SQUIRL banana pie

我想搜索Squirl,搜索应该抓住Squirl和SQUIRL。 香蕉$ExistingWord1也是如此,它也是Banana,也应该搜索BANANA

    $sql1 = "UPDATE product_description SET name = REPLACE(name, '$ExistingWord1', '$ReplacerWord1') WHERE name LIKE '%$SearchWord1%';";

if ($conn->query($sql1) === TRUE) {
    echo "<h1>Everything worked as planned</h1>";
} else {
    echo "Error updating record: " . $conn->error;
}

我在stackoverflow上阅读了几篇帖子,到目前为止没有任何帮助。

4 个答案:

答案 0 :(得分:4)

我不知道是不是我,但我不确定你的问题。

如果您想要的是确保找到您想要的项目而不管情况如何,那么您可以使用名为UPPER(...)和LOWER(...)的MySQL函数来转换字符串分别为大写或小写

例如:

SELECT name FROM product_description WHERE LOWER(name) = 'squirl';

将匹配Squirl,SQUIRL或squirl

答案 1 :(得分:0)

在mysql中,varchar和text不区分大小写 http://dev.mysql.com/doc/refman/5.0/en/case-sensitivity.html

确保您的文字不包含其他语言的字符

答案 2 :(得分:0)

默认情况下,Mysql不区分大小写。

您可能拥有区分大小写的字符集,或者您的列已分配了BINARY类型。

BINARY a和A不同,这不是你想要的。

参考:this SO post

小心 - 因为当产品/商品具有相同的名称并且您没有按ID获取时,CI表可能会给您重复的结果;)

答案 3 :(得分:0)

通常,在MySQL中,基于字符串的搜索不区分大小写。