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);