PDOのプレースホルダからIN演算子を使いたい(けど,使えない)
PDOのプレースホルダから,IN演算子を使いたくて試してみたけど,どうにも使えない.
Zend_Db_Selectから以下のようなコードを書くと,
<?php $select = Zend_DBオブジェクト->select(); // ごにょごにょ $select->where('condition IN(?)', array('hoge', 'fuga')); ?>
こんな感じのSQLが生成される.
SELECT ごにょごにょ WHERE condition IN ('hoge', 'fuga');
PDOのプレースホルダで投げようとするとエラーになってしまう.
<?php // Array to string conversionっていうエラーが返ってくる $pdo->query('SELECT ごにょごにょ WHERE condition IN(?)', array(array('hoge', 'fuga'))->fetchAll(); // エラーにはならないけど,もちろんちゃんと動かない. $pdo->query('SELECT ごにょごにょ WHERE condition IN(?)', array("'hoge', 'fuga'")->fetchAll(); ?>
何か根本的な勘違いをしているのだろうか...
Zend_DB_Selectのように,コード側で動的にSQL作る関数を用意しておくしかないのだろうか...
と言いつつ,いつもはループでOR演算子を繋げてます.
参考URL:
PDOを使用し複数キーワードでOR条件のDB検索