PHP/Mysql 选择和特殊字符

问题描述 投票:0回答:2

我有一个简单的 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   

字符集服务器是我无法改变的。好像是我的主机设置的。 任何更改此设置的尝试都会向我发出一条消息,告诉我我没有允许我执行此操作的超级权限。

php mysql select special-characters
2个回答
1
投票

在 mysql_query 之后使用以下内容:

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

0
投票

我得到了答案,但问题不是我想象的那样......

这与 mysql 本身无关,而是关于我用来输出 MySQL 结果的 json_encode。

所以,我必须对输入数据进行utF8解码...

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

然后我进行 Mysql 查询,最后输出结果如下:

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

echo json_encode ($response);
© www.soinside.com 2019 - 2024. All rights reserved.