前提・実現したいこと
phpを使って簡単な検索、登録、更新ができるフォームを作っています。
発生している問題・エラーメッセージ
フォームに入力したデータを検索したいのですが、違うものが表示されてしまいます。
### 該当のソースコード <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>登録画面</title> </head> <body> <?php if(empty($_POST)) { header("Location: kensaku.html"); exit(); }else{ //名前入力判定 $name=null; if (!isset($_POST['name']) || $_POST['name'] === "" ){ $errors['name'] = "名前が入力されていません。"; } $zip11=null; if (!isset($_POST['zip11']) || $_POST['zip11'] === "" ){ $errors['zip11'] = "名前が入力されていません。"; } $addr11=null; if (!isset($_POST['addr11']) || $_POST['addr11'] === "" ){ $errors['addr11'] = "名前が入力されていません。"; } $email=null; if (!isset($_POST['email']) || $_POST['email'] === "" ){ $errors['email'] = "名前が入力されていません。"; } } if(count($errors= array()) === 0){ $dsn = 'mysql:host=localhost;dbname=kensaku;charset=utf8'; $user = 'haniwa'; $password = 'gojira0217'; try{ $dbh = new PDO($dsn, $user, $password); $statement = $dbh->prepare("SELECT * FROM juushoroku WHERE name LIKE '%{$name}%' or '%{$zip11}%' or '%{$addr11}%' or '%{$email}%'"); if($statement){ $like_yourname = "%".$name."%"; //プレースホルダへ実際の値を設定する $statement->bindValue('$name', $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($name, ENT_QUOTES, 'UTF-8')."さんで検索しました。"?></p> <p><?=$row_count?>件です。</p> <table border='1'> <tr><td>名前</td><td>郵便番号</td><td>住所</td><td>メールアドレス</td></tr> <?php foreach($rows as $row) ?> <tr> <td><?=htmlspecialchars($row['name'],ENT_QUOTES,'UTF-8')?></td> <td><?=htmlspecialchars($row['zip11'],ENT_QUOTES,'UTF-8')?></td> <td><?=htmlspecialchars($row['addr11'],ENT_QUOTES,'UTF-8')?></td> <td><?=htmlspecialchars($row['email'],ENT_QUOTES,'UTF-8')?></td> </tr> <?php ?> <?php elseif(count($errors) > 0): ?> <?php foreach($errors as $value){ echo "<p>".$value."</p>"; } ?> <?php endif; ?> </body> </html> ```ここに言語名を入力 php データベースはこんな感じです。
sql文に変数を入れてみたのですが、うまく表示されません。
検索をしてみてもいまいち参考になるものが見当たらず,,,皆様のお力をお貸しいただけないでしょうか。
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。