2012-05-28 6 views
6

Ruby初心者はこちら。私はこの文字列 "Lady Arabella's Scandalo ..."を挿入しようとしています。私はこれを行うためにruby-pgを使用しています。しかし、一重引用符のためにエラーが発生しています。この文字列をどのように消去し、すべてのhtmlタグを削除できますか?このための関数が組み込まれていますか?ruby​​-pgはデータを挿入する前に消毒する

答えて

20

あなたは適切にあなたの単一引用符をエスケープするescape_stringを使用することができます。

db = PG.connect(...) 
db.exec("insert into t (...) values ('#{db.escape_string(str)}', ...)") 

またはprepareを使用してexec_preparedではなく、準備されたステートメントで動作するように:

db.prepare('ins', 'insert into t (...) values ($1, ...)') 
db.exec_prepared('ins', [str, ...]) 
+0

感謝を。私はGoogleとここに来た。 'connection.escape_string'を使用しています。 – huy

+0

@heady up、 'connection.escape_string'はフィールドの最後にバックスラッシュをエスケープしません。 –

+2

@IslamAzab 'escape_string'はPostgreSQL Cライブラリから' PQescapeStringConn'を呼び出すだけです。したがって、バックスラッシュをエスケープしない場合は必要ありません。または私は何かを逃していますか? –

関連する問題