人の名前や電話番号や性別という複数のフィールドから検索し、表示できるようにしたいのですが(例:検索フォームに男と打ったら検索結果に人の名前と電話番号と性別が出てくる等にしたいです)
エラー文にこう出てきます
「Warning: PDOStatement::bindValue() expects at most 3 parameters, 5 given in /○○○/○○○/○○○/○○○/○○○/search.php on line 28」と
「Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: no parameters were bound in /○○○/○○○/○○○/○○○/○○○/search.php on line 30」というエラーは色々調べた結果出なくなったのですが「検索失敗しました。」と出てきます
教えてくださったら助かります
よろしくお願い致します
コードがこちらです
hitoがテーブル名です
name,tel,sexがフィールド名(名前、電話番号、性別)です
<?php
header("Content-type: text/html; charset=utf-8");
if(empty($_POST)) {
header("Location: search.html");
exit();
}else{
//名前入力判定
if (!isset($_POST['yourname']) || $_POST['yourname'] === "" ){
$errors['hito'] = "入力されていません。";
}
}
if(count($errors) === 0){
$dsn = 'mysql:host=○○○';'dbname=○○○;charset=utf8';
$user = '○○○';
$password = '○○○';
try{
$dbh = new PDO($dsn, $user, $password);
$statement = $dbh->prepare("SELECT * FROM hito where name LIKE (:name) and tel LIKE (:tel)");
if($statement){
$yourname = $_POST['yourname'];
$like_yourname = "%".$yourname."%";
//プレースホルダへ実際の値を設定する
$statement->bindValue(':name', $like_yourname, PDO::PARAM_STR);
$statement->bindValue(':tel', $like_yourname, PDO::PARAM_STR);
if($statement->execute()){
//レコード件数取得
$row_count = $statement->rowCount();
while($row = $statement->fetch()){
$rows[] = $row;
}
}else{
$errors['error'] = "検索失敗しました。";
}
//データベース接続切断
$dbh = null;
}
}catch (PDOException $e){
print('Error:'.$e->getMessage());
$errors['error'] = "データベース接続失敗しました。";
}
}
?>
<!DOCTYPE html>
<html>
<head>
<title>検索結果</title>
<meta charset="utf-8">
</head>
<body>
<?php if (count($errors) === 0): ?>
<p><?=htmlspecialchars($yourname, ENT_QUOTES, 'UTF-8')."さんで検索しました。"?></p>
<p><?=$row_count?>件です。</p>
<table border='1'>
<tr><td>名前</td><td>性別</td></tr>
<?php
foreach((array)$rows as $row){
?>
<tr>
<td><?=$row['name,tel,sex']?></td>
</tr>
<?php
}
?>
<?php elseif(count($errors) > 0): ?>
<?php
foreach($errors as $value){
echo "<p>".$value."</p>";
}
?>
<?php endif; ?>
</body>
</html>