PEAR::MDB2 の quote()

ちょっとハマったのでメモ。


MDB2では、値をエスケープするのに quote() を使うらしい。
で、作ってるプログラムでは、値をエスケープしつつ、文字列全体をクォートで囲まないようにする必要があった*1


じゃあどうすれば良いのかと思ってマニュアルを読むと、

お気づきのとおり、"boolfield2" はクォートされていません。これは quote() メソッドで FALSE を指定したからです。

http://pear.plus-server.net/package.database.mdb2.intro-quote.html

なるほど第二引数にfalseを与えるのか、と試したところ、

第二引数にtrue
「'」=>「'\''」

第二引数にfalse
「'」=>「'」

何も変わっていない…


どうもクォートしないというのは、値をクォートで囲まないことではなく、値自体をクォートしないという意味だったらしい。
よく見ればマニュアルにもきちんと書いてある。

値をクォートで囲まずにエスケープしたい場合は escape() メソッドを使用します。

http://pear.plus-server.net/package.database.mdb2.intro-quote.html

いや、なんで quote() があるのに escape() を用意してるのか分からなかったけど、こういう意味だったのね。

*1:前後に '%' くっつけて、無理やり部分一致検索させたかったのね