ADODBでのWHERE句 IN演算子
PHPのmysql関数で書かれているSQL文を
ADODBでの形に書き換えようと思ったときにつまづきました。
ADOでお馴染みの(?)prepareとexecuteを利用しようとして、
?を使ったクエリを作成しました。
$query = select * from [table] where [カラム] in ( ? ) ;
?に入るのは「1,2,3,4,5,6」という文字列。
これで実行すると・・・
沢山データがとれるはずがなぜか1つだけしかとれませんでした。
そこでexecuteされた結果をvar_dumpして、
実行されたSQL文を見てみると、
select * from [table] where [カラム] in ( ‘1,2,3,4,5,6′ ) ;
・・・文字列全体をクオートで囲ってしまっていました。
本来なら
select * from [table] where [カラム] in ( 1,2,3,4,5,6 ) ;
select * from [table] where [カラム] in ( ‘1′,’2′,’3′,’4′,’5′,’6′ ) ;
のどちらかでないといけないのですが・・・。
いろいろ調べましたが、結局分からずで
SQL文の中に関数を入れてしまいました。
(エスケープはもちろんしていますが・・・)
どなたかやり方をご存じの方、いらっしゃいませんか?(苦笑)
ADODBマニュアルをしっかり読めば書いてあるのだろうか・・・。
タグ: ADODB, 演算子関連記事
この記事へのリンク生成
この記事へのリンクタグ:
表示サンプル:ADODBでのWHERE句 IN演算子(cafeトキワ荘)
この記事へのTrackback URL:
1 月 31st, 2008 at 23:53:40
カラムがchar型で、各文字列の後ろに余分なスペースが入っているのでは??