- 2006-02-15
- pgsql
addslashesによるエスケープ処理は止めましょう(yogaki's blog)
ちなみにSQLiteを使っている場合はaddslashesでエスケープ処理はNGです。もっと根本的に間違っています。SQLiteではMS SQL Server, Sybaseと同様「'」は「''」とシングルクオートでエスケープします。
前にもちょっと書いたんですが、PostgreSQL の将来のバージョンでは、 (SQLite 等と同様に) シングルクォート内のバックスラッシュが特別な意味を持たなくなるそうです。
また、8.1.x から E'' という構文が追加されています。これは将来のバージョンで シングルクォート内のバックスラッシュが特別な意味を持たなくなった後でも、 E'' 構文の中のバックスラッシュは 8.1.x 以前同様特殊な文字として扱われます。
今の PHP の pg_escape_string() の実装がどうなっているかは知りませんが、 こういったインタフェースのサポート関数は、 PQparameterStatus() で standard_conforming_strings の確認して、 (将来の変更までに)適切なエスケープ処理を行うよう変更する必要があるようです。
なのでよろしくお願いします(誰に?)。