質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
MVC

MVC(Model View Controller)は、オブジェクト指向プログラミングにおけるモデル・ビュー・コントローラーの総称であり、ソフトフェア開発で使われている構築パターンとしても呼ばれます。

phpMyAdmin

phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

790閲覧

MVCで配列のデータを反映したい

I_d

総合スコア28

MVC

MVC(Model View Controller)は、オブジェクト指向プログラミングにおけるモデル・ビュー・コントローラーの総称であり、ソフトフェア開発で使われている構築パターンとしても呼ばれます。

phpMyAdmin

phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2022/02/27 10:54

自分は今、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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2022/02/27 11:05

まずはエラーハンドリングして状況確認してください。 https://www.php.net/manual/ja/pdo.error-handling.php ※特にDB関係の処理をするときは必須であるという意味であえて回答にしてません。あくまで解決のためのヒントです
guest

回答1

0

自己解決

'mysql:dbname = ' .DB_NAME. のスペースを1つ多く追加していたのが原因でした。

投稿2022/03/15 10:36

I_d

総合スコア28

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問