使用php形式的引号和撇号

时间:2016-10-07 21:40:44

标签: php mysql

我有一个将数据上传到mysql数据库的表单。有一个处理表单的外部php文件。当有人使用引号或撇号时,我遇到了问题。以下是输入到表单中的内容以及数据库中显示内容的示例:

如果我在表单中输入target's,它会在数据库中显示target\'s 如果我在表单中输入"Sud",则会在数据库中显示\"Sud\"

在变量声明中,我使用的是:

$var = mysql_escape_string($_POST['var']);

在插入语句中,我使用的是:

$query = "INSERT INTO tablename VALUES ('$var')";

我也尝试了mysql_real_escape_string,当我使用该功能时,表中根本没有插入任何数据。

有人可以告诉我我需要做些什么来逃避这些字符,以便数据输出就像在表单中输入一样?谢谢。

2 个答案:

答案 0 :(得分:0)

首先,请注意不推荐使用mysql_escape_string,请参阅mysql_escape_string

其次,我怀疑你的问题是由表字符集引起的,请尝试使用mysql_real_escape_string查看是否可以修复它。

请注意,mysql_real_escape_string也已弃用

答案 1 :(得分:0)

使用PDO和查询参数更安全,更容易

$query = "INSERT INTO tablename (columnname) VALUES (?)";
$stmt = $pdo->prepare($query);
$stmt->execute([$_POST['var']]);

使用查询参数,您永远不必担心引用/转义,或可能的撇号或任何其他棘手的字符。

mysqli扩展也支持查询参数,但我建议您跳过mysqli并学习PDO。 PDO更易于使用。