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 検索が可能になる。
よかった。
コメント