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は彼自身の質問に答えました:

このFAQを確認してください。文字列内の「」を「」に置き換える必要があります。

4

1 に答える 1

1

説明文字列内のすべての一重引用符を 2 つにするのが 1 つの方法です。このようにして、悪意のある説明を避けることができます ( Bobby Tablesを参照)。

 ' ' 

になります:

 '' '' 

さらに重要なことに、潜在的に危険な説明:

' WHERE 1=1 DELETE FROM Event --

無害になります:

'' WHERE 1=1 DELETE FROM Event --

別の (より安全な) 方法は、準備済みステートメントを使用することです。

于 2009-03-27T20:05:47.557 に答える