3

一重引用符を含む可能性のあるフィールドがあり、一重引用符でデータベースに保存されます。たとえば、フィールドは次のようになります。

1|xyzの友達|21.3

2|こんにちは、tty の友達|42.2

ユーザーは、表示する値に基づいて検索クエリを入力します。

たとえば、ユーザーが入力した場合->変数(PHP)に格納されているxyzの

できない

select * from table where field LIKE '%variable%' 

変数にはすでに引用符が含まれているためです。postgres では %variable% を二重引用符で囲むことはできません

私もこのようなことをしてみました

select * from table where field LIKE E'%variable%' 

エスケープシーケンスを使用することもできますが、それも機能しません。何か助けはありますか?

4

2 に答える 2

8

自分で引用しようとせず、ライブラリを使用してください。この場合、必要ですpg_escape_string。したがって、パーセント ラッパーを追加してフィードしpg_escape_string、その結果を SQL に入れます。

余談ですが、PostgreSQL 文字列リテラルで単一引用符をエスケープする適切な方法は、二重引用符を使用することです。文字列として持っている場合、データベースは SQL で"it's"参照する必要があります。'it''s'

于 2012-05-11T04:43:05.727 に答える