2012-03-05 76 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

你能向我們展示你的團隊的__construct()嗎? – 2012-03-05 13:09:31

+0

@MickHansen在Team.php中沒有'__construct()' – 2012-03-05 13:39:51

回答

3

我認爲

private $_db; 

未設置你應該做的事情likje

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!我錯過了__結構。謝謝! – 2012-03-05 13:49:15

0

你製作團隊的實例與$分貝,但它永遠不會被調用的team-類。

相關問題