2013-08-22 52 views
0

我在任何人询问之前对每个INSERT使用mysql_real_escape_string()。 但是,我希望用户能够输入撇号,但它们以反斜杠形式出现。不过,我也希望他们能够使用反斜杠。允许在SQL中使用撇号

用户是可信的,但有可能允许这些字符,同时也防止SQL注入的可能性?

回答

2

是的,只是使用参数化查询。

看看这个answer

的基本概念是,在添加参数之前,你的搜索查询被编译,从而使SQL注入是不可能的。

+1

这应该是“接近重复”的投票而不是答案。 –

+1

@ÁlvaroG.Vicario1.答案是一样的,但问题不同。 OP认为他的问题是“如何允许撇号” - 这可能是他寻找解决方案失败的原因。简单地关闭重复是没有帮助的,因为他没有意识到“允许”的概念是有缺陷的,直到他这样做,另一个问题似乎脱节。无论哪种方式,我仍然需要将问题标记为模糊的代表200分,所以答案是我能做的最好的。 – Sylverdrag

+0

我不问如何防止SQL注入。我问如何“解决”撇号变成反斜杠等事实,并显示这些字符**没有**允许SQL注入 – DorianHuxley

-2

您可以使用strip_slashes函数删除撇号插入的所有斜线。

因此,您使用mysql_real_escape_string()将数据插入到数据库中。然后,当你想将数据拉到前端时,通过函数stripslashes()运行它,它将删除所有的斜线。

您应该考虑使用mysqli,因为mysql已被弃用。

+0

如果OP提到SQL注入,那么使用不推荐的'mysql_ *'函数并不是一个好的答案。 –

+0

有意破坏数据的转义函数非常危险。幸运的是,这不是'mysql_real_escape_string()'的工作方式。 –