FMDBはとても便利なライブラリだ。
そのFMDBを使用していて少々ハマってしまったので記事にすることにした。
 
例えば以下のようなSQLでデータを求めるとする。
SELECT * FROM users WHERE name='%佐藤%'
これをFMDBで行うケースを考えてみよう。

ケース1
まずは上記SQLをそのまま実行してみよう。

これは問題なく動作する。
しかし、SQLインジェクションのことを考えるとこの方法はよろしくない。

ケース2
次にプレイスホルダーを使用してみよう。

これだと1件も取得出来ない。
何故だろう。

実はクエリとパラメータの書き方に問題がある。
上記はこのようにしなければならない。

クエリの中に'%佐藤%'と書くのではなく、パラメータの方に書かなければいけないというわけだ。
勘違いしやすいところだと思うので、注意しよう。

※PHPのPDO等では当然の考え方のようだが、いずれにせよハマりやすいポイントではあると思うので、記事として残しておく。