PDOでLIKE検索
LIKE検索でつまづいでいます。
こまめにチェックしながら進めており、エラーが表示されるわけではないのですが、うまくキーが引き渡せていないのが原因だとは思うのですが、どう対策すればいいかというところでつまづいています。
文字コードの指定、直接パラメーターを使わない、プレースホルダの使い方、キーの渡し方等アドバイスをいただけないでしょうか。
※全件表示だと動作します。また、$keyの中身はきちんと渡っているのは確認できましたが、select文の部分に反映されていないような状態。。。
【検索フォーム】
<form name="" method="POST" action="result.php">
<button type="submit" name="area" value="新宿">新宿</button>
</form>
【検索結果】
define('DB_HOST', 'localhost');
define('DB_USER', 'ユーザー名');
define('DB_PASSWORD', 'DBパスワード');
define('DB_NAME', 'DB名');
try {
$dbh = new PDO('mysql:host='.DB_HOST.';dbname='.DB_NAME,DB_USER,DB_PASSWORD,
array(
PDO::MYSQL_ATTR_INIT_COMMAND => "SET CHARACTER SET 'utf8'")
);
} catch (PDOException $e) {
echo $e->getMessage();
exit;
}
$key = "%".$_POST['area']."%";
$stmt = $dbh->prepare('SELECT * FROM salon WHERE area LIKE :area');
$stmt->bindParam(':area', $key, PDO::PARAM_STR);
$stmt->execute();
?>
<body>
<?php foreach ($stmt as $row) : ?>
<?php echo htmlspecialchars($row['name'],ENT_QUOTES,'UTF-8'); ?>
<?php echo htmlspecialchars($row['area'],ENT_QUOTES,'UTF-8'); ?>
<?php endoforeach; ?>
</body>
アドバイスをいただければ幸いです。