Reputation: 48758
I've clearly done something quite silly here. Can anyone guide me?
Here's how I have things set up:
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;
}
}
Page code:
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);
Error message:
Call to a member function query() on a non-object in Team.php on line 20
Line 20: $STH = $this->_db->query("SELECT FirstName FROM UserDetails WHERE TeamID = '$teamID'");
What have I done wrong?
Upvotes: 0
Views: 3105
Reputation: 6832
You're making a instance of Team with an $db but it never gets called in the team-class.
Upvotes: 0
Reputation: 76880
I think that
private $_db;
is not set you should do something 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;
}
}
Upvotes: 3