Fejl i sql class - cannot acces private property
Hej eksperter. Jeg er igang med at lave en mysql class, men ved test får jeg fejlen:Fatal error: Cannot access protected property DB_MysqlStatement::$result in C:\Server\www\cache\lib\DB_Mysql.php on line 52
Umiddelbart kan jeg ikke selv se hvor fejlen ligger. Jeg er relativ ny i OO Programmering.
---------test.php--------------------
<?php
require "lib/DB_Mysql.php";
$dbh = new DB_Mysql("brugernavn","kodeord","localhost","database");
$query = "SELECT * FROM users WHERE user_id = '1'";
$stmt = $dbh->execute($query);
?>
---------DB_Mysql.php-----------------
<?php
class DB_Mysql {
protected $user;
protected $pass;
protected $dbhost;
protected $dbname;
protected $dbh; // Database connection handle
public function __construct($user, $pass, $dbhost, $dbname) {
$this->user = $user;
$this->pass = $pass;
$this->dbhost = $dbhost;
$this->dbname = $dbname;
}
protected function connect() {
$this->dbh = mysql_pconnect($this->dbhost, $this->user, $this->pass);
if(!is_resource($this->dbh)) {
throw new Exception;
}
if(!mysql_select_db($this->dbname, $this->dbh)) {
throw new Exception;
}
}
public function execute($query) {
if(!$this->dbh) {
$this->connect();
}
$ret = mysql_query($query, $this->dbh);
if(!$ret) {
throw new Exception;
}
else if(!is_resource($ret)) {
return true;
} else {
$stmt = new DB_MysqlStatement($this->dbh, $query);
$stmt->result = $ret;
return $stmt;
}
}
}
class DB_MysqlStatement {
protected $result;
public $query;
protected $dbh;
public function __construct($dbh, $query) {
$this->query = $query;
$this->dbh = $dbh;
if(!is_resource($dbh)) {
throw new Exception("Din database connection er ikke gyldig");
}
}
public function fetch_row() {
if(!$this->result) {
throw new Exception("Din query-forespørgsel blev ikke fuldført");
}
return mysql_fetch_row($this->result);
}
public function fetch_assoc() {
return mysql_fetch_assoc($this->result);
}
public function fetchall_assoc() {
$retval = array();
while($row = $this->fetch_assoc()) {
$retval[] = $row;
}
return $retval;
}
}
?>
