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

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

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

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

解決済

Fatal error: Uncaught Error: Using $this when not in object context in ~のエラーを回避したい

chibi144
chibi144

総合スコア64

PHP

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

4回答

0リアクション

0クリップ

14887閲覧

投稿2017/11/07 02:50

編集2017/11/07 04:01

###前提・実現したいこと
MVCとクラスについて勉強中です。
とりあえずModel部分を作ろうとしています。
DB接続とデータ加工までをModelでやって、controllerで呼び出せるようにしたいです。

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

Fatal error: Uncaught Error: Using $this when not in object context in Model.php:53 Stack trace: #0 controller.php(11): DBconnect::getList() #1 {main} thrown in Model.php on line 53

###該当のソースコード

php

if(isset($_POST['item_id'])){ $input_item_id = $_POST['item_id']; } else{ $input_item_id = null; //★エラーを表示させる? } if(isset($_POST['type'])){ $input_item_type = $_POST['type']; } else{ $input_item_type = null; //★エラーを表示させる? } if(isset($_POST['maker'])){ $input_item_maker_id = $_POST['maker']; } else{ $input_item_maker_id = null; //★エラーを表示させる? } class DBconnect { public $db; private $host = 'xxx'; private $dbname = 'xxx'; private $dbuser = 'xxx'; private $password = 'xxx'; public function __construct() { $dsn = sprintf( 'mysql:host=%s;dbname=%s;charset=utf8', $this->host, $this->dbname ); try{ $this->db = new PDO($dsn, $this->dbuser, $this->password); } catch (PDOException $e) { header('Content-Type: text/plain; charset=UTF-8', true, 500); exit($e->getMessage()); } } // 商品リスト取得 public function getList() { $sql = 'SELECT * FROM data where data.id = ?'; $stmt = $this->db->prepare($sql); //ここでエラーが出ます $stmt->execute(['sample']); $rows = $stmt->fetchAll(); return $rows; } }

php

include(dirname(__FILE__) . "/model.php"); new DBconnect; DBconnect::getList();

###試したこと
$stmt = $this->db->query($sql)
⇒ $stmt = self::$db->query($sql)
と書き換えてみましたが、Access to undeclared static propertyと怒られました。

###補足情報(言語/FW/ツール等のバージョンなど)
PHP7.1.8

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
86.12%

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

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

質問する

関連した質問

同じタグがついた質問を見る

PHP

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