I am changing my script from connecting to the database within every function, to using one connection (in the main class).
However, I am getting an error:
Call to a member function query() on a non-object
Here is the main class:
<?php
class main{
// the configuration vars
public $config;
// the current user variables
public $uid = 0; // contains the user ID
public $gid = 0; // contains the group ID
// database variables
public $DB; // contains the connection
public $query_id; // contains the query ID
public $query_count; // how many queries have there been?
// cache variables
public $cache;
public $test = 'hi';
// initiate
public function __construct(){
}
// start up functions
public function startup(){
// first, set up the caching
if($this->config['use_memcache'] == true){
// start up cache
require_once('cache.class.php');
$this->cache = new cache_TS();
}
// now, set up the DB
$this->connectToDatabase();
// now, set up the user session
$this->setUserSession();
// are we logged in? If so, update our location
if($this->uid > 0){
// update location
$this->updateUserSession();
}
}
// connect to database
public function connectToDatabase(){
// connect to database
$this->DB = new mysqli($this->config['host'],$this->config['user'],$this->config['pass'],$this->config['db']);
// were we able to connect?
if(!isset($this->DB)){
// this is an error
exit('could not connect to the database.');
}
// test query
$q = "SELECT id,title FROM topics WHERE id='1' LIMIT 1;";
$q = $this->DB->query($q);
$r = $q->fetch_assoc();
echo $r['id'] . $r['title'];
// send back
return $this->DB;
}
// some removed....
The test query works fine.
It fails here:
<?php
class forum extends main{
public function viewTopic($tid){
// Connect To Database
//$sql = new mysqli(db::$config['host'], db::$config['user'], db::$config['pass'], db::$config['db']);
// Get assorted details (topic, forum, etc)
// Get topic details
$tid = intval($tid);
$tq = "SELECT * FROM `topics` WHERE id='$tid' LIMIT 1";
$tq = $this->DB->query($tq);
$tr = $tq->fetch_assoc();
startup in main has already been called before forum is. The DB connects without failure.
Can anyone see what the problem is? How can I get $this->DB->query to work? (The query works fine when it's ran in the main class)