Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
转义Javascript中的特殊字符以在MySql中使用它们_Javascript_Mysql_Textarea_Html Escape Characters - Fatal编程技术网

转义Javascript中的特殊字符以在MySql中使用它们

转义Javascript中的特殊字符以在MySql中使用它们,javascript,mysql,textarea,html-escape-characters,Javascript,Mysql,Textarea,Html Escape Characters,我经历了很多问题,这些问题都是出于同样的想法提出的,但似乎对我不起作用 我有一个HTML文本区,从中收集用户的评论,并将其存储在MySql数据库中。因此,我希望用户输入的特殊字符也能被接受,不会出现任何错误/异常,并将其存储在数据库中 我为换行符找到了一个解决方案,并添加了这行代码,效果很好 var comment = document.getElementById("commentArea").value; comment = comment.replace(/\n/g, '<br /&

我经历了很多问题,这些问题都是出于同样的想法提出的,但似乎对我不起作用

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

我为换行符找到了一个解决方案,并添加了这行代码,效果很好

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

不需要在JavaScript中转义任何内容,您不会直接插入它,而是通过某种服务器端脚本(如PHP)插入它。这是执行这些任务的地方。尤其是,您永远不能信任使用JavaScript完成的任何事情。用户可以轻松地修改它,甚至禁用JavaScript。 这不应该阻止你的网站或数据库


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

不需要在JavaScript中转义任何内容,您不会直接插入它,而是通过某种服务器端脚本(如PHP)插入。这是执行这些任务的地方。尤其是,您永远不能信任使用JavaScript完成的任何事情。用户可以轻松地修改它,甚至禁用JavaScript。 这不应该阻止你的网站或数据库


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

如果要对字符串进行URI编码,可以使用encodeURIComponent()和decodUriComponent()函数。这是指向函数的文档页面的链接


希望对您有所帮助。

如果您想对字符串进行URI编码,可以使用encodeURIComponent()和decodUriComponent()函数。这是指向函数的文档页面的链接



希望有帮助。

您使用的驱动程序是什么?NodeJs,PHP?必须在服务器端(而不是客户端)转义该值。忘记在客户端执行此操作。在服务器端代码中,在将注释写入数据库之前,需要使用mysqli_real_escape_字符串。这确实应该在服务器端而不是客户端完成。例如,如果您使用的是PHP,那么您可以使用PHP的addslashes对字符串进行转义:如果这不是一个选项,为什么必须由客户机完成?不要在客户机上使用Javascript对MySQL进行转义!在创建查询时,您需要在服务器上转义,不早不晚!阅读。所以我在Servlet中转义它们?你使用什么驱动程序?NodeJs,PHP?必须在服务器端(而不是客户端)转义该值。忘记在客户端执行此操作。在服务器端代码中,在将注释写入数据库之前,需要使用mysqli_real_escape_字符串。这确实应该在服务器端而不是客户端完成。例如,如果您使用的是PHP,那么您可以使用PHP的addslashes对字符串进行转义:如果这不是一个选项,为什么必须由客户机完成?不要在客户机上使用Javascript对MySQL进行转义!在创建查询时,您需要在服务器上转义,不早不晚!阅读。那么我在Servlet中转义它们?那么我在Servlet中转义它们?使用replace()方法?@AnjanBaradwaj不,不要使用非创建的内容进行转义。我不知道您使用的是什么服务器端语言,所以我无法告诉您确切的语言是什么,但可能有一些专门的函数用于此目的。@AnjanBaradwaj没有看到上次编辑。您应该将Hibernate查询对象与参数一起使用,并在其上设置*方法(如果您使用Hibernate与数据库联系)。@AnjanBaradwaj“存储在数据库中”时不要转义,在输出中使用时要转义(例如HTML)。Java/JDBC/Hibernate/etc很好。@ElonThan我尝试使用prepared语句,并使用
setString()
方法传递它。但这似乎仍然不起作用你能想出它不工作的原因吗?所以我把它们放在Servlet中?使用replace()方法?@AnjanBaradwaj不,不要使用非创建的内容进行转义。我不知道您使用的是什么服务器端语言,所以我无法告诉您确切的语言是什么,但可能有一些专门的函数用于此目的。@AnjanBaradwaj没有看到上次编辑。您应该将Hibernate查询对象与参数一起使用,并在其上设置*方法(如果您使用Hibernate与数据库联系)。@AnjanBaradwaj“存储在数据库中”时不要转义,在输出中使用时要转义(例如HTML)。Java/JDBC/Hibernate/etc很好。@ElonThan我尝试使用prepared语句,并使用
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();