【php】LIKE検索のやり方【MySQL】
1.SQLの書き方
SQLのlike検索は通常前方一致:SELECT * FROM hogetable WHERE name like '%name';
部分一致:SELECT * FROM hogetable WHERE name like '%name%';
後方一致:SELECT * FROM hogetable WHERE name like 'name%';
・・・のように書くが、phpで行う場合、以下のようなものだけでよい。
前方一致であれ、部分一致であれ、後方一致であれ以下の式を使用する。
SELECT * FROM hogetable WHERE name like :name;
2.%の付け方
上記SQLの説明で「:name」としているため、実際の検索ワードは後でマッピングする。そしてそのマッピング値に対し、「%」を付与しておく。以下は部分検索の場合。
/* SQL */ $sql = SELECT * FROM hogetable WHERE name like :name; $stmt = $dbh->prepare($sql); /* nameのLIKE検索 */ $name = '検索する名前'; $name = '%'.$name.'%'; $stmt->bindParam(':name', $name, PDO::PARAM_STR); $stmt->execute();