将html插入数据库时​​如何解决引号问题?

时间:2019-11-28 14:47:30

标签: postgresql sql-insert

由于许多html元素都使用了引号,因此将其插入数据库非常困难。你们有什么建议?一些元素使用单/多引号。我正在使用PostgreSQL,但我认为在不同的dbms上是相同的

语句示例:

INSERT INTO TABLENAME VALUES ('faf98cef-4589-4d9b-a60e-ac4490bc4c63', 'c4cb1381-f24c-11e9-b8e2-f742f4b6cc52', '{# include '$path/aro.ftl' #} <!-- module begin --> <table efw-data="module" class="full-width max-width-default" align="center" width="100%" border="0" cellpadding="0" cellspacing="0" style="table-layout: auto; margin: 0 auto; "> <tbody> <tr> <td style="">......

我的最后一个选择是对html进行编码/解码,但我想按原样保存它。

3 个答案:

答案 0 :(得分:3)

通常在SQL中,将单引号加倍即可转义:'Arthur''s House'

但是对于长字符串,使用Postgres的dollar quoting更容易,那么您无需更改输入字符串中的任何内容。

INSERT INTO TABLENAME (col1, col2, html_col)
VALUES (
  'faf98cef-4589-4d9b-a60e-ac4490bc4c63', 
  'c4cb1381-f24c-11e9-b8e2-f742f4b6cc52', 
   $html${# include '$path/aro.ftl' #} ....... $html$
);

如果从编程语言中执行此操作,则不应将此类值连接到SQL查询中。

在每个值都有一个占位符的地方,使用“准备好的语句”更好很多。具体如何执行取决于所使用的编程语言。

答案 1 :(得分:0)

您要手动插入吗?如果是,请添加不限制列数据的引号两次。

如果要通过软件添加,请尝试查看您的语言是否具有准备好的语句。

例如:

INSERT INTO TABLENAME VALUES ('faf98cef-4589-4d9b-a60e-ac4490bc4c63', 'c4cb1381-f24c-11e9-b8e2-f742f4b6cc52', '{# include ''$path/aro.ftl'' #} <!-- module begin --> <table efw-data="module" class="full-width max-width-default" align="center" width="100%" border="0" cellpadding="0" cellspacing="0" style="table-layout: auto; margin: 0 auto; "> <tbody> <tr> <td style="">...

答案 2 :(得分:0)

您可以使用双引号和单引号。 html代码内部的单引号和外部代码的双引号。例如"<button class='btn1'>Click me</button>"

INSERT INTO TABLENAME VALUES ('faf98cef-4589-4d9b-a60e-ac4490bc4c63', 'c4cb1381-f24c-11e9-b8e2-f742f4b6cc52', "{# include '$path/aro.ftl' #} <!-- module begin --> <table efw-data='module' class='full-width max-width-default' align='center' width='100%' border='0' cellpadding='0' cellspacing='0' style='table-layout: auto; margin: 0 auto;'> <tbody> <tr> <td style=''>");