2016-05-10 19 views
0

pdo接続オブジェクトを返す接続クラスを作成しました。他のモデルクラスはそのクラスを拡張します。ビューモードでは、私はnamespaceとautoloadクラスを使って出力を取得しようとしましたが、致命的なエラー '非オブジェクトのメンバー関数query()を呼び出します。'これを解決するために私を助けてください。php pdo namespaceクラスの拡張で致命的なエラーが発生しました

これは、その後、私は、フロントエンドのページで Form.php

namespace myproject; 
use myproject\Connection; 

class Form extends Connection 
{ 
    public function GetUser($id) 
    { 
     $sql = "select * from users where uid='$id'"; 
     $query = $this->dbh->query($sql); 
     $data = $query->fetch(PDO::FETCH_ASSOC); 
     $uname = $data[first_name]." ".$data[last_name]; 
     return $uname; 
    } 
} 

他のクラスにこのクラスを拡張Connection.php

namespace myproject; 
use PDO; 

class Connection 
{ 

    private $host = "localhost"; 
    private $user = "root"; 
    private $pass = ""; 
    private $dbname = "mydb"; 
    public $dbh; 
    private $error; 


    public function __construct() 
    { 

     $dsn = 'mysql:host=' . $this->host . ';dbname=' . $this->dbname; 

     try{ 
      $this->dbh = new PDO($dsn, $this->user, $this->pass); 
      $this->dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
      return $this->dbh; 
     } 
     // Catch any errors 
     catch(PDOException $e){ 
      $this->error = $e->getMessage(); 
     } 
    } 
} 

あり、それは私が先に指摘したエラーメッセージが来ました。

namespace myproject; 
include 'Form.php'; 
include 'Connection.php'; 

$test = new Form(); 
echo $test->GetUser(1); 
+0

親クラスのオブジェクトを作成する必要がありますconnectイオン$ objはそれから$ obj - > $ dbh-> query($ sql)と呼ばれます。 –

+0

@Ravi Hirani:レスポンスありがとう、From.phpのコンストラクタで試してみましたが、それでもエラーです。 – user2870117

+0

PDOとの接続に成功したことをどのように知っていますか? $ this-> errorの下のエラーをキャッチし、チェックしません。 –

答えて

1

あなたForm.phpファイルは次のようになります -

namespace myproject; 
use PDO; // add this line 

class Form extends Connection{ 
    public function GetUser($id) 
    { 
     $sql = "select * from users where uid='$id'"; 
     $query = $this->dbh->query($sql); 
     $data = $query->fetch(PDO::FETCH_ASSOC); 
     // added single quotes around first_name and last_name 
     $uname = $data['first_name']." ".$data['last_name']; // added single quotes around first_name and last_name 
     return $uname; 
    } 
} 

あなたビューファイルは次のようになります。 -

<?php 
namespace myproject; 
include 'Connection.php'; // include connection file first 
include 'Form.php'; // include form file second 

$test = new Form(); 
echo $test->GetUser(1); 

が、それはあなたを助けることを願っています:-)

+0

ありがとうございました.Ravi、今はその仕事。 – user2870117

+0

@ user2870117:歓迎します:-) –

関連する問題