代码之家  ›  专栏  ›  技术社区  ›  Jamie Taylor

在查询中添加撇号

  •  1
  • Jamie Taylor  · 技术社区  · 14 年前

    我有一个查询,它从一个文本框中获取文本并将其输入数据库。

    如果价值是 Taylor 但当它是 O'Neill 因为撇号给出了一个语法错误 unclosed quotation mark

    有没有办法补充 奥尼尔 数据库里还有撇号吗?

    我不想用一个双引号来代替它,我想把它放在数据库中。

    谢谢

    4 回复  |  直到 14 年前
        1
  •  2
  •   Pablo Santa Cruz    14 年前

    如果你使用 双引号 ,你不会以 双引号 在你的数据库里。你最终会 只有一个报价 .

    这个 双引号 只是为了 逃跑 单引号 在一个SQL语句中。所以,当你做一个:

    > insert into your_table (name) values ('O''neil');
    

    价值 O'neil 将实际插入数据库。

    如果你的数据库是 PostgreSQL公司 ,还有其他操作字符串的方法。例如使用 $$ :

    > insert into your_table (name) values ($$O'neil$$);
    

    将插入 奥尼尔 在数据库中。

        2
  •  2
  •   Adam Maras    14 年前

    你可能想看看 第四步。对SQL查询使用命令参数 在里面 this document by Microsoft patterns & practices . 这不仅可以解决引用问题,而且还可以防止SQL注入攻击和其他 非常糟糕的事情 不会发生的。

        3
  •  1
  •   Oded    14 年前

    你可以把一个撇号翻一番来逃避它( '' )-将插入一个撇号。

    所以,插入 O''Neill 会导致 O'Neill 插入数据库。

    但是,您需要这样做的事实表明,您使用的是 SQL Injection Attacks .

    如果你使用 parameterized queries ,你将不会那么脆弱,也不需要借助于逃逸的撇号。

        4
  •  1
  •   jaderanderson    14 年前

    您可以用double“”提交SQL查询,这样数据库就可以识别转义字符并只保存一个。

    为什么你不想要双单报价的解决方案?