PHP MySQL语句中的特殊字符

时间:2012-08-03 16:37:58

标签: php mysql char

我在MySQL数据库中存储了一些特殊字符。特别是®。我想选择具有这些字符的所有条目。我目前正在使用此声明:

  

mysql_query(“SELECT * FROM table WHERE description LIKE'%®%'或名称   喜欢'%®%'“);

它返回0个条目。当我尝试使用%a%的东西时,它会返回很多,所以我知道一切都是正确的,这只是某种字符串问题或类似问题。

当我回复“”时,它会返回“娔。

此外,当我在phpmyadmin中执行完全相同的查询时,它可以正常工作。请帮忙!

1 个答案:

答案 0 :(得分:1)

阅读此内容非常全面的帮助

只需将这些符号添加到文本中,然后将其作为SQL查询执行:

INSERT INTO tbl_name VALUES ("Here's my text: ©®");

当你想要显示它时,网站不会对这些符号做任何事情(但要记得至少逃避<,>,&(使用htmlspecialchars())因为它们在XML / SGML中具有特殊含义(HTML)文件)

PS。还记得使用mysql_real_escape_string()转义传递给SQL查询的文本,以避免任何SQL注入问题。如果您的服务器启用了magic_quotes_gpc,请将其禁用或至少将您的GET / POST / COOKIE数据过滤为其原始值。你应该始终有意识地逃避价值观。 编辑:

根据您的评论......我不记得默认情况下是否启用了magic_quotes_gpc,但您可以轻松撤消魔法引号效果。就在PHP代码的最开头,添加如下内容:

if (get_magic_quotes_gpc()) {
  array_walk_recursive($_GET, 'stripslashes');
  array_walk_recursive($_POST, 'stripslashes');
  array_walk_recursive($_COOKIE, 'stripslashes');
}

现在每个GPC值应该始终是原始的 - 没有引号 - 所以你必须在将任何变量传递给查询之前手动转义它。