我有一个简单的 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
字符集服务器是我无法改变的。好像是我的主机设置的。 任何更改此设置的尝试都会向我发出一条消息,告诉我我没有允许我执行此操作的超级权限。
在 mysql_query 之后使用以下内容:
header('Content-type: text/html; charset=utf-8');
我得到了答案,但问题不是我想象的那样......
这与 mysql 本身无关,而是关于我用来输出 MySQL 结果的 json_encode。
所以,我必须对输入数据进行utF8解码...
$query = utf8_decode($_REQUEST['query']);
然后我进行 Mysql 查询,最后输出结果如下:
$response = array_map("utf8_encode", $response);
echo json_encode ($response);