【问题标题】:'s Punctuation in SQL StatementSQL语句中的标点符号
【发布时间】:2012-02-19 20:50:14
【问题描述】:

我正在尝试将带有“There's”的字符串添加到 adobe sqlite 中。并且它表明字符串中的 's 有错误?无论如何我可以在 SQL 语句中添加 's 吗?

INSERT INTO TABLE_1 VALUES(null,"name","There's a string here here",1);

【问题讨论】:

  • 我想你只是用另一个''来逃避'',即“有”
  • 你需要转义它。话虽如此,更好的做法是使用参数绑定和占位符。谷歌搜索应该指向正确的方向。示例:cookbooks.adobe.com/…
  • 您应该使用准备好的语句进行调查。
  • 您使用什么(如果有)编程语言(即 php、c# 等)来构造/执行 SQL - 大多数语言都能够为您执行这种转义。
  • @MrEyes 某种基于 Adob​​e 的语言(见标签)。但是转义是所有语言的错误方法。

标签: sql database sqlite adobe


【解决方案1】:

试试:

INSERT INTO TABLE_1 VALUES(null,'name','There''s a string here here',1);

【讨论】:

    【解决方案2】:

    虽然您可以简单地转义',但更好的做法是使用参数绑定和占位符; SQL 注入不是你的朋友。

    stmt.text = "INSERT INTO PERSON (FNAME, LNAME) " 
                + "values(:FNAME, :LNAME)";
    
    stmt.parameters[":FNAME"] = edtFName.text;
    stmt.parameters[":LNAME"] = edtLName.text;
    
    ...
    
    <s:TextInput id="edtFName" />
    <s:TextInput id="edtLName" />
    

    【讨论】:

      【解决方案3】:

      用两个连续的撇号替换字符串中的所有撇号。

      【讨论】:

        【解决方案4】:

        very similar question(iPhone 代替 Adob​​e)中的答案是,您必须为每个撇号添加第二个撇号(“There's”变成“There's”),或者您使用参数化的 SQL 语句。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2010-09-14
          • 2021-06-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多