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:前後に '%' くっつけて、無理やり部分一致検索させたかったのね