【问题标题】:handling a special character in a string while storing to a record on sqlite在存储到 sqlite 上的记录时处理字符串中的特殊字符
【发布时间】:2010-10-16 00:40:45
【问题描述】:

在下面的代码中,我看到当我的“描述”类似于: " ' ' ",我在将描述更新到 sqlite 记录时遇到问题。 我如何处理 ' 字符。谢谢!

sql = wxString::Format(
"UPDATE event SET event_description='%s' WHERE id=%d",
description.c_str(),
event_id);
rc = sqlite3_exec((sqlite3 *)_theDB, sql.c_str(), NULL, 0, &sqlError);

OP 回答了他自己的问题:

检查一下FAQ 我们需要将字符串中出现的 ' 替换为 ''

【问题讨论】:

    标签: c++ c sqlite wxwidgets


    【解决方案1】:

    将描述字符串中的所有单引号加倍是一种方法。这样可以避免恶意描述(参见Bobby Tables)。

     ' ' 
    

    变成:

     '' '' 
    

    更重要的是,潜在危险的描述:

    ' WHERE 1=1 DELETE FROM Event --
    

    变成无害的:

    '' WHERE 1=1 DELETE FROM Event --
    

    另一种(更安全)的方法是使用prepared statements

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-19
      • 2010-11-19
      • 2019-07-12
      • 1970-01-01
      • 2019-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多