【发布时间】:2014-03-19 08:59:35
【问题描述】:
我有一个简单的 mysql 查询:
$query = addslashes($_REQUEST['query']);
$sql = mysql_query ("SELECT * FROM countries WHERE name LIKE '%{$query}%'");
它适用于任何 $query,除非其中包含特殊字符。
假设我正在寻找“奥兰群岛”或“科特迪瓦”,它不会检索任何内容。
我也试过不加斜杠,但它并没有改变任何东西。
感谢您的帮助。
编辑
这是我在 Mysql 中设置的变量:
character_set_client | utf8
character_set_connection | utf8
character_set_database | utf8
character_set_filesystem | binary
character_set_results | utf8
character_set_server | latin1
character_set_system | utf8
字符集服务器是我无法更改的。它似乎是由我的托管设置的。 任何改变这一点的尝试都会给我一条消息,告诉我我没有允许我这样做的超级权限。
【问题讨论】:
-
试试这个:-stackoverflow.com/questions/18455406/… 或 stackoverflow.com/questions/10578694/… 在搜索时替换这些字符
-
请检查输入字符串和数据库编码是否相同(显然我建议使用utf-8)
-
@Lorenzo Marcon:我编辑了我的问题。这可能会给你一些额外的信息。
-
@A5I-IE5:我绑了,但没有帮助
-
您必须继续执行步骤,以确定问题所在。尝试在脚本中硬编码查询,例如
$sql = mysql_query ("SELECT * FROM countries WHERE name LIKE '%Åland Islands%'")。它提供结果吗?
标签: mysql select special-characters