前提・実現したいこと
MySQLに保存したカードデータの中から該当カードを検索する事の出来る
カード検索システムを作成したいと思っています([メ]と打てばどちらの名前が出てくるようにしたいです。)
テーブルが存在していないエラーだという事は何となく理解できるのですが解決手段が分かりません。
発生している問題・エラーメッセージ
Eroor:SQLSTATE[42S02]: Base table or view not found: 1146 Table 'cardfolder.name' doesn't exist
該当のソースコード
sample_search_form.html
1 2<!DOCTYPE html> 3<html lang="en"> 4<head> 5 <meta charset="UTF-8"> 6 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 7 <title>検索フォーム</title> 8</head> 9<body> 10 <h1>カード検索</h1> 11 <form method="post" action="sample_search.php"> 12 <input type="text" name="yourname"> 13 <input type="submit" value="検索する"> 14 </form> 15</body> 16</html>
sample_search.php
1 2<?php 3header("Content-type: text/html; charset=utf-8"); 4$errors = array(); 5if(empty($_POST)){ 6 header("Location: sample_search_form.html"); 7 exit(); 8}else{ 9 if(!isset($_POST['yourname']) ||$_POST['yourname'] ===""){ 10 $errors['name'] = "名前が入力されていません"; 11 } 12} 13 14if(count($errors) === 0){ 15 $dsn = 'mysql:host=localhost;dbname=cardfolder;charset=utf8'; 16 $user = 'root'; 17 $pass = 'root'; 18 19 try{ 20 $dbh = new PDO($dsn,$user,$pass); 21 $statemant = $dbh->prepare("SELECT * FROM name WHERE name LIKE (:name) "); 22 23 if($statemant){ 24 $yourname = $_POST['yourname']; 25 $like_yourname = "%".$yourname."%"; 26 $statemant->bindValue(':name',$like_yourname,PDO::PARAM_STR); 27 28 if($statemant->execute()){ 29 $row_count = $statemant->rowCount(); 30 while($row = $statemant->fetch()){ 31 $rows[] = $row; 32 } 33 }else{ 34 $errors['error'] = "検索失敗しました。"; 35 } 36 37 $dbh = null; 38 } 39 40 }catch(PDOException $e){ 41 print('Eroor:'.$e->getMessage()); 42 $errors['error'] = "データベースに接続失敗しました。"; 43 } 44} 45 46?> 47 48<!DOCTYPE html> 49<html lang="en"> 50<head> 51 <meta charset="UTF-8"> 52 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 53 <title>検索結果</title> 54</head> 55<body> 56 <?php if(count($errors) === 0): ?> 57 <p><?=htmlspecialchars($yourname,ENT_QUOTES,'UTF-8')."で検索しました。"?></p> 58 <p><?=$row_count?>件です。</p> 59 60 <table border='1'> 61 <tr><td>id</td><td>name</td></tr> 62 63 <?php 64 foreach($rows as $row){ 65 ?> 66 <tr> 67 <td><?=$row['id']?></td> 68 <td><?=htmlspecialchars($row['name'],ENT_QUOTES,'UTF-8')?></td> 69 </tr> 70 <?php 71 } 72 ?> 73 74 <?php elseif(count($errors) > 0): ?> 75 <?php 76 foreach($errors as $value){ 77 echo "<p>".$value."</p>"; 78 } 79 ?> 80 <?php endif; ?> 81</body> 82</html>
試したこと
変数が未定義と言う事だったので(isset($errors)===0)にして見ましたが、別の行にて同じエラーが発生してしまい、解決策が分かりませんでした。
補足情報(FW/ツールのバージョンなど)
xamppを用いてApache、MySQLを導入し、VScodeでコードの方を入力しています。
エラーが起きているコードは下のPHPの方です。
回答3件
あなたの回答
tips
プレビュー