Monday 17 October 2016

php - DB class wont load




I'm trying to connect using a simle db class. For some reason it only print out
"Initiate DB class"



test.php



include 'db.class.php';
echo 'Initiate DB class';
$db = new DB();

echo 'DB class did load';


db.class.php



class DB extends mysqli {
private static $instance = null;
private function __construct () {
parent::init();
$host = 'localhost';

$user = 'root';
$pass = 'MY_PASS';
$dbse = 'MY_DB';
parent::real_connect($host, $user, $pass, $dbse);
if (0 !== $this->connect_errno):
die('MySQL Error: '. mysqli_connect_error());
//throw new Exception('MySQL Error: '. mysqli_connect_error());
endif;
}
public function fetch ($sql, $id = null, $one = false) {

$retval = array();
if ($res = $this->query($sql)):
$index = 0;
while ($rs = $res->fetch_assoc()):
if ($one):
$retval = $rs; break;
else:
$retval[$id ? $rs[$id] : $index++] = $rs;
endif;
endwhile;

$res->close();
endif;
return $retval;
}


}



I have tried to search my log files for error but they come out empty.


Answer




Ok got it,



In your call to db your calling new DB(); which mean you're trying to call the constructor of your DB class.



In your DB class it looks like you're trying to create a singleton, but something is missing normally there would be something to assign the instance the database connection, and something that asks the instance if it's empty create a new connection or if it's not use the same instance.



At the end of the day to make this work you can change your constructor to public.


No comments:

Post a Comment

c++ - Does curly brackets matter for empty constructor?

Those brackets declare an empty, inline constructor. In that case, with them, the constructor does exist, it merely does nothing more than t...