年代のプルダウンを選択すると該当の年代の人がDBから検索できるようにしたい。

前提

実現したいこと

PHPで、年代のプルダウンを選択すると該当の年代の人がDBから検索できるようにしたい。

発生している問題・エラーメッセージ

エラーメッセージ

Uncaught Error: Call to a member function fetchAll() on bool in D:\XAMPP\htdocs\pulldown\test.php:12 Stack trace: #0 {main} thrown in D:\XAMPP\htdocs\pulldown\test.php on line 12

該当のソースコード

HTML

<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>プルダウン</title> </head> <body> </body> </html> <form method='POST' action='test.php'> <select name='age'> <option value='10代~20代'>10代~20代</option> <option value='30代~50代'>30代~50代</option> <option value='30代~50代'>60代以上</option> </select> <input type='submit' value='送信' /> </form> </body> </html>

PHP

<?phpclass DB{ //MySQLとやり取りするクラス private $USER = "root"; private $PW = ''; private $dns = "mysql:dbname=test;host=localhost;charset=utf8"; private function Connectdb() { //PDOのインスタンスを生成(接続を担当する)関数 try { $pdo = new PDO($this->dns, $this->USER, $this->PW); return $pdo; } catch (Exception $e) { return false; } } public function executeSQL($sql, $array = null) { //SQLを実行する関数 try { if (!$pdo = $this->Connectdb()) return false; $stmt = $pdo->prepare($sql); $stmt->execute($array); return $stmt; //戻り値はPDOStatementのインスタンス } catch (Exception $e) { return false; } }}

PHP

<?php//入力値の取得$age=$_POST["age"];//データベース接続if(isset($age)){require_once('db.php'); $db = new DB(); $sql = 'SELECT * FROM test WHERE age_data=?'; $data[] = $age; $res = $db->executeSQL($sql); if ($recs = $res->fetchAll(PDO::FETCH_ASSOC)) { print '<ul>'; foreach ($recs as $rec) { $ban = $rec['ban']; $name = $rec['name']; $age_data = $rec['age_data']; ?> <li><?= $ban ?> <?= $name ?> <?= $age_data ?> </li> <?php } }else { print '結果が存在しません。'; }}?>

試したこと

Call to a member function fetchAll() on boolで試したがわからなかった。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

コメントを投稿

0 コメント