WordPress カスタマイズ開発初心者に!データーベースから安全に Like 検索する方法

wordpress

medium_3556391164

photo credit: thatcanadiangirl via photopin cc

かなり高度っす。

WrodPress にはデータベースと接続する為のグローバルオブジェクトが用意されている。このオブジェクトの中にある関数に、SQL インジェクション等をされないようにする為の「prepare」がある。

基本的な使い方は「関数リファレンス/wpdb Class」を参照下さい。

例えば ID(数値列)に対して検索を行う場合

$wpdb->prepare(“select * from wp_table where id = %d”,’1234′);

文字列に対して検索を行う場合は

$wpdb->prepare(“select * from wp_table where name = %s”,’あきたたかき’);

等とする。

数値は「%d」文字は「%s」として関数にて置き換えが行われる。この置き換えをする時に悪さをする情報がクリーニングされるので、安全にデーターベースを使う事が出来る

さて、もんだいは like 検索だ。like 検索の場合「カラム like “%あきた%”」等として「%」はどんな文字がきても良いよ。って意味になる。「%d」とか「%s」とかどうすればいいんだぁ〜?と戸惑ってしまう。

しかし!大丈夫。「%」は「%」でエスケープ出来る。

$wpdb->prepare(“select * from wp_table where name = \”%%%s%%\””,’あきた’);

と書く事で

select * from wp_table where name = “%あきた%”

となり、めでたく安全に lile 検索が可能になる。

よかった。

コメント

タイトルとURLをコピーしました