実現したいこと
SQL接続のオブジェクトからMySQLに接続し、クエリ(select文)を実行する
以下のようなコードがあります。
php
1<?php 2 3class DbObject 4{ 5 const DSN = "mysql:dbname=sampledb;host=localhost;"; 6 // const DSN = "mysql:dbname=sampledb;host=localhost;port:3307"; 7 const USER = "root"; 8 const PASSWORD = "root"; 9 10 public function __construct() 11 { 12 $dbh = new PDO(self::DSN, self::USER, self::PASSWORD); 13 return $dbh; 14 } 15}
php
1<?php 2//Controller 3require_once(dirname(__DIR__, 1) . "\Models\DbObject.php"); 4require_once(dirname(__DIR__, 1) . "\Models\User.php"); 5 6$dbh = new DbObject(); 7$sql = "select * from users"; 8 9foreach ($dbh->query($sql) as $user) { 10 // 処理 11}
状況
Controllerの部分で以下のエラーが出ます。
error
1Fatal error: Uncaught Error: Call to undefined method DbObject::query() in C:\xampp\htdocs\Sample\Controllers\IndexController.php:8 Stack trace: #0 {main} thrown in C:\xampp\htdocs\Sample\Controllers\IndexController.php on line 9
なぜ上記のような現象が発生するのでしょうか。
またMySQLのポートは「3307」でデフォルトから変更しているのにこれでMySQL自体に接続成功しているのでしょうか?
※定数のDSNにポート番号を追加しても同じエラーが返されます。
環境
Webサーバー Apache(8080ポート)
DBサーバー MySQL(3307ポート)
回答5件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/12/04 03:12
退会済みユーザー
2019/12/04 03:16
退会済みユーザー
2019/12/04 04:10
退会済みユーザー
2019/12/04 04:19
退会済みユーザー
2019/12/04 04:21
退会済みユーザー
2019/12/04 04:21
退会済みユーザー
2019/12/04 04:30