PDOのプリペアドステートメントを使ってSQLを作る場合、通常以下のようなコードとなる。
$stmt = $dbh->prepare("SELECT * FROM tbl_users WHERE name = :name");
$params = [
':name' => 'hoge',
];
$stmt->execute($params);
このコードをLIKE句とワイルドカードを使って、部分検索(あいまい検索)をおこなう場合、次のようにすると良い。
// ワイルドカードの使い方
$stmt = $dbh->prepare("SELECT * FROM tbl_users WHERE name LIKE :name");
$params = [
':name' => '%'.'hoge'.'%',
];
$stmt->execute($params);
このコードに行き着くまでに、以下のようなコードを書いてしまったが、これではエラーとなるので注意。
// 誤った例
$stmt = $dbh->prepare("SELECT * FROM tbl_users WHERE name LIKE %:name%");
$params = [
':name' => 'hoge',
];
$stmt->execute($params);