2012-03-05 17 views
0

私はここでかなり愚かなことをしてきました。誰も私を導くことができますか?ここでPHP PDO:非オブジェクト上のメンバ関数query()を呼び出す

は、私は物事設定している方法は次のとおりです。

database.phpで:

class Database extends PDO { 

/** 
* Connect 
*/ 
public function __construct($file = 'db_config.ini') { 
    if (!$settings = parse_ini_file($file, TRUE)) throw new exception('Unable to open ' . $file . '.'); 

    $dns = $settings['database']['driver'] . 
    ':host=' . $settings['database']['host'] . 
    ((!empty($settings['database']['port'])) ? (';port=' . $settings['database']['port']) : '') . 
    ';dbname=' . $settings['database']['schema']; 

    parent::__construct($dns, $settings['database']['username'], $settings['database']['password']); 
} 

} 

Team.php:

class Team { 

private $_db;  

/** 
* getTeamMembers - Get team member UserIDs from TeamID 
* 
* @param int $teamID 
* @return array UserIDs 
*/ 
public function getTeamMembers($teamID) { 
    $result = ""; 
    $STH = $this->_db->query("SELECT FirstName FROM UserDetails WHERE TeamID = '$teamID'"); 
    $result = $STH->setFetchMode(PDO::FETCH_OBJ); 

    return $result;   
} 
} 

ページコード:

try { 
    $db = new Database(); 
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    $team = new Team($db); 
} 
catch (PDOException $e) { 
    echo "<p>Error connecting to database: </p>".$e->getMessage(); 
} 

$teamMembers = $team->getTeamMembers($teamID); 

エラーメッセージ:

Call to a member function query() on a non-object in Team.php on line 20

ライン20:$STH = $this->_db->query("SELECT FirstName FROM UserDetails WHERE TeamID = '$teamID'");

私が間違って何をしましたか?

+0

Teamの '__construct()'を見せてもらえますか? –

+0

@MickHansen Team.phpには '__construct()'はありません –

答えて

3

私は

private $_db; 

はあなたが$ DBでチームのインスタンスを作っているが、それはteam-で呼び出されることは決してありません

class Team { 

private $_db;  

function __construct($db){ 
    $this->_db = $ddb 
} 

public function getTeamMembers($teamID) { 
    $result = ""; 
    $STH = $this->_db->query("SELECT FirstName FROM UserDetails WHERE TeamID = '$teamID'"); 
    $result = $STH->setFetchMode(PDO::FETCH_OBJ); 

    return $result;   
} 

} 
+0

Doh!私は__constructを見逃しました。ありがとう! –

0

likje何かをしなければならない設定ではないと思われますクラス。

関連する問題