PHP / Mysql选择和特殊字符

时间:2014-03-19 08:59:36

标签: mysql select special-characters

我有一个简单的mysql查询:

$query = addslashes($_REQUEST['query']);
$sql = mysql_query ("SELECT * FROM countries WHERE name LIKE '%{$query}%'");

它适用于任何$查询,除非它有特殊字符。

假设我正在寻找“Åland群岛”或“科特迪瓦”,它不会取回任何东西。

我也试过没有addslashes,但它只是没有改变任何东西。

感谢您的帮助。

修改

这是我在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   

字符集服务器是我无法改变的。它似乎是由我的托管设置的。 任何改变这种情况的尝试都会给我一条消息,告诉我我没有超级权限可以让我这样做。

2 个答案:

答案 0 :(得分:1)

在mysql_query之后使用以下:

header('Content-type: text/html; charset=utf-8');

答案 1 :(得分:0)

我得到了答案,但问题不是我认为的那个......

它不是关于mysql本身,而是关于我用来输出MySQL结果的json_encode。

所以,我不得不对输入数据进行utF8解码......

$query = utf8_decode($_REQUEST['query']);

然后我做了我的Mysql查询,最后输出我的结果:

$response = array_map("utf8_encode", $response); 

echo json_encode ($response);
相关问题