2009-03-27 4 views
4

в следующем фрагменте кода, я вижу, что когда мое «описание» выглядит примерно так: " ' ' ", у меня возникла проблема с обновлением описания записи sqlite , Как справиться с символом. благодаря!Обработка специального символа в строке при сохранении записи на 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); 

ОП ответил на свой вопрос:

проверить это FAQ нам нужно заменить вхождений 'с „“ в строке

ответ

1

Удвоение все одиночные кавычки в строке описания это один из способов сделать это. Таким образом, вы можете избежать вредоносных описаний (см. Bobby Tables).

' ' 

становится:

'' '' 

И что еще более важно, потенциально опасное описание:

' WHERE 1=1 DELETE FROM Event -- 

становится безвредным:

'' WHERE 1=1 DELETE FROM Event -- 

Другой (более безопасный) способ, является использовать prepared statements.