使用MySQL和PHP中的特殊字符(撇号)

时间:2015-06-22 20:12:48

标签: php mysql character

我正在尝试解决从表单收集信息的页面中的问题。在<head>我们有:

<meta http-equiv="content-type" content="text/html;charset=utf-8" />

连接到数据库后,有一行:

mysql_query("SET NAMES utf8");

在变量$ comments中插入的一个字段通常有撇号,所以我们有一行:

$comments= addslashes($comments); 

将其插入数据库之前。

当我们尝试从另一个页面读出数据库时,我们执行此行

stripslashes($row[$comments]);

当我们“得到一个简单的?(问号)时,它实际上存储在mySQL中。

其他字符如简单的撇号'只是变成了...在数据库中和 或类似的。

如何摆脱这些问号字符并保留原始数据?

1 个答案:

答案 0 :(得分:1)

addslashes()是错误的转义函数。您必须使用mysql_real_escape_string(),因为转义取决于所使用的字符集。因此,您最好还使用mysql_set_charset(),这应取代您的SET NAMES utf8查询。

总而言之,请注意不推荐使用mysql扩展,并将从PHP中删除。请改用mysqli。

反向部分也是错误的。没有必要删除转义 - 在查询期间被“使用”时它被删除了。但是,您必须确保将输出的所有数据正确编码为HTML。