我在MySQL数据库中存储了一些特殊字符。特别是®。我想选择具有这些字符的所有条目。我目前正在使用此声明:
mysql_query(“SELECT * FROM table WHERE description LIKE'%®%'或名称 喜欢'%®%'“);
它返回0个条目。当我尝试使用%a%的东西时,它会返回很多,所以我知道一切都是正确的,这只是某种字符串问题或类似问题。
当我回复“”时,它会返回“娔。
此外,当我在phpmyadmin中执行完全相同的查询时,它可以正常工作。请帮忙!
答案 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值应该始终是原始的 - 没有引号 - 所以你必须在将任何变量传递给查询之前手动转义它。