4

在下面的代码中,我看到当我的“描述”类似于: " ' ' "时,我在将描述更新到 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回答了他自己的问题:

查看此常见问题解答我们需要将字符串中出现的 ' 替换为 '

4

1 回答 1

1

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

 ' ' 

变成:

 '' '' 

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

' WHERE 1=1 DELETE FROM Event --

变成无害的:

'' WHERE 1=1 DELETE FROM Event --

另一种(更安全)的方法是使用准备好的语句

于 2009-03-27T20:05:47.557 回答