わからないこと
・検索処理をしても指定したものではなくすべてヒットしてしまう
・Undefined indexのエラー処理がうまくいかない
期待する結果
"田中"と検索するとデータベースから"田中"を探してcount変数で検索結果を表示する
ーーーーーーーーーーーーーーー
接続しました
検索結果は1件です
番号 氏 名 年齢
1 田中 一郎 21
ーーーーーーーーーーーーーーー
上のような結果を出力したいです
現在の結果
29行目のエラーと検索結果の不一致が起こります
ーーーーーーーーーーーーーーー
接続しました
Notice: Undefined index: serch_key in C:\xampp\htdocs\suraphpsamp\Chapter8\list.php on line 29
検索結果は5件です
番号 氏 名 年齢
1 田中 一郎
2 山田 二郎
3 林 三郎
4 鈴木 四郎
5 佐藤 五郎
ーーーーーーーーーーーーーーー
以下。SQL文とHTML,PHPのコードになります
sql
1 create table member( 2 id MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT, 3 last_name VARCHAR(50), 4 first_name VARCHAR(50), 5 age tinyint unsigned, 6 primary key (id) 7 ); 8 9+----+-----------+------------+------+ 10| id | last_name | first_name | age | 11+----+-----------+------------+------+ 12| 1 | 田中 | 一郎 | 21 | 13| 2 | 山田 | 二郎 | 18 | 14| 3 | 林 | 三郎 | 35 | 15| 4 | 鈴木 | 四郎 | 10 | 16| 5 | 佐藤 | 五郎 | 28 | 17+----+-----------+------------+------+
form.php
php
1<!DOCTYPE html> 2<html lang = "ja"> 3<head> 4 <meta charset="UTF-8"> 5 <title>PHPのテスト</title> 6</head> 7<body> 8 <div style ="font-size:14px">PHPのテスト</div> 9 10<form name = "form1" method = "post" action="list.php"> 11 名前:<br> 12 <input type = "text" name = "search_key"> 13 <br> 14 15 <input type = "submit" value = "送 信"> 16 </form> 17 18</body> 19</html> 20 21
list.php
php
1<!DOCTYPE html> 2<html lang = "ja"> 3<head> 4 <meta charset="UTF-8"> 5 <title>PHPのテスト</title> 6</head> 7<body> 8 9<?php 10 11$db_user = "sample"; 12$db_pass = "password"; 13$db_host = "localhost"; 14$db_name = "sampledb"; 15$db_type = "mysql"; 16 17$dsn = "$db_type:host=$db_host;dbname=$db_name;charset=utf8"; 18 19try{ 20 $pdo = new PDO($dsn,$db_user,$db_pass); 21 $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); 22 $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES,false); 23 print "接続しました<br>"; 24 25}catch(PDOException $Exception){ 26 die("接続エラー:".$Exception->getMessage()); 27} 28 29$search_key = '%'.$_POST['serch_key'].'%'; //ここが29行目 30 31try{ 32 $sql = "SELECT * FROM member WHERE last_name like :last_name OR first_name like :first_name"; 33 34 $stmh = $pdo->prepare($sql); 35 $stmh->bindValue(':last_name',$search_key,PDO::PARAM_STR); 36 $stmh->bindValue(':first_name',$search_key,PDO::PARAM_STR); 37 $stmh->execute(); 38 $count = $stmh->rowCount(); 39 print "検索結果は".$count."件です<br>"; 40 41}catch(PDOException $Exception){ 42 $pdo->rockBack(); 43 print "エラー:".$Exception->getMessage(); 44 45} 46if($count < 1){ 47 print "検索結果がありません<br>"; 48}else{ 49?> 50<table border = "1"> 51 <tbody> 52 <tr><th>番号</th><th>氏</th><th>名</th><th>年齢</th></tr> 53 54<?php 55while ($row = $stmh->fetch(PDO::FETCH_ASSOC)){ 56?> 57<tr> 58<td><?=htmlspecialchars($row["id"],ENT_QUOTES)?></td> 59<td><?=htmlspecialchars($row["last_name"],ENT_QUOTES)?></td> 60<td><?=htmlspecialchars($row["first_name"],ENT_QUOTES)?></td> 61</tr> 62 63<?php 64} 65?> 66 67</tbody></table> 68<?php 69} 70?> 71 72</body> 73</html> 74 75
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/10/10 14:59