Php 在搜索中输入字符ñ时,它从数据库检索所有行
我对我的laravel项目有一个简单的搜索,当我在其中输入字符“ñ”并提交搜索时,表中的所有行都会被检索 查询很简单,它只使用其中一个:where'title','LIKE',%$search\u criteria% 我的数据库是utf8\U unicode\U ciPhp 在搜索中输入字符ñ时,它从数据库检索所有行,php,mysql,laravel-4,Php,Mysql,Laravel 4,我对我的laravel项目有一个简单的搜索,当我在其中输入字符“ñ”并提交搜索时,表中的所有行都会被检索 查询很简单,它只使用其中一个:where'title','LIKE',%$search\u criteria% 我的数据库是utf8\U unicode\U ci 为什么会发生这种情况?utf8\u general\u ci排序规则不区分大小写,也不区分重音,因此您的查询将返回所有包含字母“n”的行,大写或小写,是否加重音。有关排序规则如何影响搜索和比较的信息,请参见 通过在SQL语句末尾添
为什么会发生这种情况?utf8\u general\u ci排序规则不区分大小写,也不区分重音,因此您的查询将返回所有包含字母“n”的行,大写或小写,是否加重音。有关排序规则如何影响搜索和比较的信息,请参见 通过在SQL语句末尾添加“collation new_collation”,可以更改给定SQL语句的排序规则。所以这应该对你有用:
从表格中选择*,其中的标题如“%ñ%”排序规则utf8\u bin 我的排序规则是utf8\U unicode\U ci而不是utf8\U general\U ci。另一方面,最好将my DB更改为排序规则utf8_bin??最好使用对数据库中的ORDER BY子句有意义的排序规则,即utf8_general_ci,如果需要精确匹配,则只更改特定语句的排序规则。这样,如果您的应用程序显示列表,它们在屏幕上为最终用户逻辑排序。