Hallo,
ich habe eine Klasse Datenbank, welche im Konstruktor eien PDO-Verbindung aufbaut.
Dann habe ich eine Testklasse, welche ein Objekt der Datenbank-Klasee erstellt
Soweit klappt das auch, nun wollte ich aber meine Selectabfragen alle über eine Funktion in der Datenbank.php abwickeln
In der function test hätte ich dann
geschrieben.
Jedoch kommt beim Anruf die Fehlermeldung, dass die Verwendung von Prepare auf ein Non-Object nicht möglich sei. Ich verstehe jetzt nur nicht warum.
Hier nochmal der ganze Code:
Database.php
Test.php
ich habe eine Klasse Datenbank, welche im Konstruktor eien PDO-Verbindung aufbaut.
PHP:
class Database extends PDO {
protected $database;
private $connectionArray = array(
'host' => 'mysql:dbname=database;host=127.0.0.1',
'user' => 'root',
'password' => ''
);
public function __construct() {
try {
$this->database = parent::__construct($this->connectionArray['host'], $this->connectionArray['user'], $this->connectionArray['password']);
} catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
}
}
}
Dann habe ich eine Testklasse, welche ein Objekt der Datenbank-Klasee erstellt
PHP:
class Test {
public function __construct() {
parent::$this->database = new Database();
}
public function test(){
$query = "SELECT name FROM firstname WHERE id = 1";
$stmt = $this->database-> prepare($query);
$stmt -> execute(array(':id' =>2));
var_dump($result);
}
$test = new Test();
$test->test();
}
Soweit klappt das auch, nun wollte ich aber meine Selectabfragen alle über eine Funktion in der Datenbank.php abwickeln
PHP:
public function find($query, $params = null){
$statement = $this->database->prepare($query);
$statement -> execute($params);
return $statement->fetch();
}
In der function test hätte ich dann
PHP:
$result= $this->database->find($query);
geschrieben.
Jedoch kommt beim Anruf die Fehlermeldung, dass die Verwendung von Prepare auf ein Non-Object nicht möglich sei. Ich verstehe jetzt nur nicht warum.
Hier nochmal der ganze Code:
Database.php
PHP:
class Database extends PDO {
protected $database;
private $connectionArray = array(
'host' => 'mysql:dbname=Testdatengenerator;host=127.0.0.1',
'user' => 'root',
'password' => ''
);
public function __construct() {
try {
$this->database = parent::__construct($this->connectionArray['host'], $this->connectionArray['user'], $this->connectionArray['password']);
} catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
}
}
public function find($query, $params = null){
$statement = $this->database->prepare($query);
$statement -> execute($params);
return $statement->fetch();
}
}
Test.php
PHP:
require_once 'Database.php';
class Test extends Database{
public function __construct() {
parent::$this->database = new Database();
}
public function test(){
$query = "SELECT name FROM firstname WHERE id = 1";
// $stmt = $this->database-> prepare($query);
// $stmt -> execute(array(':id' =>2));
$result= $this->database->find($query);
var_dump($result);
}
}
$test = new Test();
$test->test();