我有一个名为Movies
whit colation utf8_spanish_ci
inside是表peliculas
白色排序utf8_spanish2_ci
在字段nombre
内置归类utf8_spanish2_ci
内。
字段名称白色口音中的数据保存如下:
La CacerÃa // La cacería
El cÃrculo // El círculo
实际上我使用查询:SELECT * FROM peliculas WHERE nombre like '%$string%'
但是如果我没有重音搜索就不会产生任何结果。
所以
查询搜索和结果应为:
|query | Result |
|------------------|
|circulo | cÃrculo|
|caceria | CacerÃa|
------------------
欢迎任何想法
答案 0 :(得分:5)
我相信您需要指定COLLATE
作为SQL语句的一部分。
SELECT *
FROM peliculas
WHERE nombre LIKE '%circulo%' COLLATE utf8_unicode_ci;
example返回:
+-----+------------+
| ID | NOMBRE |
+-----+------------+
| 2 | El círculo |
+-----+------------+
(我没有在查询中使用í
,但仍然能够返回El círculo
)
我应该注意,如果您没有设置数据库编码,并且您实际上将每个“重音”存储为Ã
,那么您将遇到更多问题。这仅适用于数据库本身具有原始未替换值的基础。
或者,全文搜索可能会成功。
P.S。请继续使用PDO并停止在查询中放置$var
。