我对我的 laravel 项目进行了简单的搜索,当我在其中输入字符“ñ”并提交搜索时,表中的所有行都被检索到。
查询很简单,只用了一个where: where('title','LIKE',"%$search_criteria%")
我的数据库是 utf8_unicode_ci
为什么会这样?
最佳答案
utf8_general_ci 排序规则既不区分大小写也不区分重音,因此您的查询会返回所有包含字母“n”的行,无论大小写,是否重音。参见 http://dev.mysql.com/doc/refman/5.6/en/charset-collation-effect.html了解排序规则如何影响搜索和比较。
您可以通过在 SQL 语句末尾添加“COLLATION new_collation”来更改给定 SQL 语句的排序规则。所以这应该适合你:
SELECT * FROM table WHERE title LIKE '%ñ%' COLLATION utf8_bin;
关于php - 在搜索中输入字符 ñ 时,它会从数据库中检索所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26644829/