PHP PDO:在非对象上调用成员函数query()

时间:2012-03-05 13:07:16

标签: php pdo

我显然在这里做了一些非常愚蠢的事情。谁能指导我?

以下是我设置的方法:

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'");

我做错了什么?

2 个答案:

答案 0 :(得分:3)

我认为

private $_db; 

未设置您应该执行类似

答案 1 :(得分:0)

您正在使用$ db创建Team的实例,但它永远不会在团队级别中调用。