考虑到同一件事,我经历了各种各样的问题,但似乎对我没有用。

我有一个HTML文本区域,可从其中收集用户的注释,并将其存储在MySql数据库中。因此,我希望也接受用户输入的特殊字符,而不会出现任何错误/异常,并将它们存储在数据库中。

我遇到了换行符的解决方案,并添加了这行代码,效果很好。

var comment = document.getElementById("commentArea").value;
comment = comment.replace(/\n/g, '<br />');


&$%#(这样的其他字符都可以插入,除了引号外没有任何问题。我不确定该怎么做才能逃脱它们。
我尝试了comment.replace("\'","&39")来转义单引号,但这似乎不起作用。

我怎样才能避免单引号和双引号?提前致谢。

编辑:我正在为我的应用程序使用Jsp和Servlets。那我应该在servlet中转义这些字符吗?

让我知道投票之前的原因。

更新:如答案和评论中所建议,我使用了准备好的语句,并使用setString()方法传递了字符串。但是,问题仍然存在。

我使用的代码段是:

String query = "insert into db_name (column1,column2,column3,column4) values("SomeValue1","SomeValue2",?,"SomeValue3")";
st=conn.prepareStatement(query);
st.setString(1,"String_from_TextArea");
int rows = st.executeUpdate();

最佳答案

不需要在JavaScript中转义任何内容,您不会直接将其插入,而是通过某种服务器端脚本(例如PHP)插入。那是执行此类任务的地方。特别是您永远无法相信使用JavaScript完成的任何事情。用户可以轻松修改它,甚至禁用JavaScript。
那不应该阻止您的站点或数据库!

在服务器端,您可以使用准备好的语句将数据安全地插入数据库。

07-28 03:08
查看更多