自分は今、MVCモデルをphpで行なっているのですがデータベースに登録している配列を渡せずにいます。
調べたところ、配列が空になっており
var_dump($result)ではarray(0) { }が出力され、
var_dump($sth)ではobject(PDOStatement)#4 (1) { ["queryString"]=> string(22) "SELECT * FROM contacts" }が出力されました。
クオーテーションの違いだと思い、変更したのですが結果は変わらず、
データベースの名前も確認し同じだということも確認しました。
変更点が現状不明なのでご教示頂ければと思います。
よろしくお願いします。
datebase.php
1<?php 2define('DB_HOST', 'localhost'); 3define('DB_USER', 'root'); 4define('DB_PASSWD', 'root'); 5define('DB_NAME', 'cafe');
Db.php
1<?php 2require_once(ROOT_PATH . '/datebase.php'); 3 4class Db 5{ 6 protected $dbh; 7 8 public function __construct($dbh = null) 9 { 10 if (!$dbh) { //接続情報が存在しない時 11 try { 12 $this -> dbh = new PDO( 13 'mysql:dbname = ' .DB_NAME. 14 ';host =' .DB_HOST, 15 DB_USER, 16 DB_PASSWD 17 ); 18 //接続成功 19 } catch (PDOExpection $e) { 20 echo "接続失敗: " . $e -> getMessage() . "\n"; 21 exit(); 22 } 23 } else { //接続情報が存在する場合 24 $this -> dbh = $dbh; 25 } 26 } 27 28 public function getDbHandler() 29 { 30 return $this-> dbh; 31 } 32}
Cafe.php
1<?php 2require_once(ROOT_PATH . '/Models/Db.php'); 3 4class Cafe extends Db 5{ 6 public function __construct($dbh = null) 7 { 8 parent:: __construct($dbh); 9 } 10 11 /** 12 * contactsテーブルから全てのデータを取得 13 * 14 * @return Array $result 全選手データ 15 */ 16 17 public function findAll():Array 18 { 19 //SQL作成 20 $sql = 'SELECT * FROM contacts'; 21 //SQL実行 22 $sth = $this -> dbh -> prepare($sql); 23 $sth -> execute(); 24 $result = $sth -> fetchAll(PDO::FETCH_ASSOC); 25 var_dump($sql) . '\n'; 26 return $result; 27 } 28}
CafeController.php
1<?php 2require_once(ROOT_PATH . '/Models/Cafe.php'); 3 4class CafeController 5{ 6 private $Cafe; 7 8 public function __construct() 9 { 10 $this->request['get'] = $_GET; 11 $this->request['post'] = $_POST; 12 //モデルオブジェクトの生成 13 $this -> Cafe = new Cafe(); 14 } 15 16 public function index() 17 { 18 $cafe = $this -> Cafe -> findAll(); 19 $params = [ 20 'cafe' => $cafe 21 ]; 22 return $params; 23 } 24} 25
回答1件
あなたの回答
tips
プレビュー