DBIx::Custom – search.cpan.org
DBIx-Custom-0.1705
DBIx::Custom select メソッドの whereの項目を見ると様々な指定方法が出来ることが分かる。
注意する点はStringを渡す時。
上のように条件に ? が含まれる場合、SQLの作成に失敗する。(DBIx::Custom::QueryBuilder::build_queryでかな?)
? がメタ文字として扱われるため?(\?とエスケープしてもダメ)
Hashリファレンスで渡すと大丈夫です。
これを踏まえてコードにすると、安全なのはこんな感じのコードになるのかな。
my $id = 1; my $url = 'http://hoge.com/huga.cgi?key=value'; $result = $dbi->select( table => 'table_name', column => [qw/title content url/], where => [ ["and", "{= id}", "url = :url", "update_time > SUBDATE( NOW(), interval 7 day )"], { id => $id, url => $url}, ], );
※ {= id} は “id = :id” とも書ける(url = :urlも同様)。あえて両方含めてみた。
where にはDBIx::Custom::Whereオブジェクトも指定できますが、DBIx::Custom::Whereオブジェクトを生成する時にも同様で、? を含めた条件には注意が必要。
追記:タグ機能は廃止予定だそうです。
http://twitter.com/#!/perlcodesample/status/97162783644319744
カテゴリー: perlモジュール - Trackback Uri

