-1

由于许多 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 进行编码/解码,但我想按原样保存它。

4

3 回答 3

3

通常在 SQL 中,单引号通过加倍来转义:'Arthur''s House'

但是对于长字符串,使用 Postgres 的美元引用更容易,那么您不需要更改输入字符串中的任何内容。

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 查询中。

最好使用“准备好的语句”,其中每个值都有一个占位符你如何做到这一点取决于你使用的编程语言。

于 2019-11-28T15:18:17.033 回答
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="">...
于 2019-11-28T14:54:54.200 回答
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=''>");
于 2019-11-28T14:55:27.117 回答