php - 在搜索中输入字符 ñ 时,它会从数据库中检索所有行

标签 php mysql laravel-4

我对我的 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_collat​​ion”来更改给定 SQL 语句的排序规则。所以这应该适合你:

SELECT * FROM table WHERE title LIKE '%ñ%' COLLATION utf8_bin;

关于php - 在搜索中输入字符 ñ 时,它会从数据库中检索所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26644829/

相关文章:

php - Laravel 4 查询生成器 : LEFT JOIN . .. AND ... 查询

laravel-4 - Laravel 一对一,逆关系

javascript - 只想在用户单击 html 表单上的提交时显示绿色复选标记

php - 在不知道父键的情况下检索多维数组中子键的值

php - 当我收到 PayPal IPN 时,我应该在哪里执行 UPDATE 查询?

mysql - 我们如何在 zend 框架中使用 IN() 编写查询?

mysql - 为什么 SELECT FOR UPDATE 只在事务中起作用?

php - 获取选择框中禁用(禁用并先前选择)选项的值

php - 这 3 个查询可以合并为一个 MySQL 查询吗?

php - 在 Laravel 中将路由域更改为 IP 地址