考虑到同一件事,我经历了各种各样的问题,但似乎对我没有用。
我有一个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。
那不应该阻止您的站点或数据库!
在服务器端,您可以使用准备好的语句将数据安全地插入数据库。