Hallo zusammen,
ich bin momentan dabei mich in OOP zu versuchen und stelle dazu eine existierende Website um.
Ich habe mir folgende Database.php zusammengebastelt:
Allerdings ist ja nach neuem erzeugen der Klasse self::$db immer null, weshalb in der 5. Zeile von unten ja auch self::$db = new Database(); ausgeführt wird. Da ich aber (wie oben vielleicht erkennbar) nicht nur eine Verbindung einbauen möchte sondern auch unterschiedliche Verbindungen aufbauen will, funktionieren die anderen natürlich nicht, da dann immer __construct($connect = null) ausgeführt wird.
Ich möchte in anderen Dateien quasi gleichzeitig zwei Verbindungen offen haben. Kann mir da jemand auf die Sprünge helfen? Und wie erwähnt, ich bin in OOP noch Anfänger, also bitte möglichst einfach erklären. Achja, obige Datei ist noch nicht ganz auf OOP umgestellt.
ich bin momentan dabei mich in OOP zu versuchen und stelle dazu eine existierende Website um.
Ich habe mir folgende Database.php zusammengebastelt:
PHP-Code:
<?php
class Database {
private static $db;
private $connection;
public function __construct($connect) {
require_once('Session.php');
require_once('Config.php');
new Config();
$möglich = array('mgl1','mgl2', 'mgl3','mgl4','mgl5', null);
if(!in_array($connect, $möglich)) {
exit();
}
else {
$loginInfo = Config::getLoginData($connect = null);
$this->connection = new MySQLi($loginInfo[0], $loginInfo[1], $loginInfo[2], $loginInfo[3]);
if($this->connection -> connect_errno) { printf("Connection failed! %s\n", $this->connection -> connect_error); exit(); }
mysqli_select_db($this->connection, $loginInfo[3]) or DIE('Database name is not available!');
if($connect == null) {
mysqli_query($this->connection, "UPDATE `admins` SET `zuletzt` = NOW() WHERE `Name` = '".Session::get('userName')."'");
mysqli_query($this->connection, "UPDATE `admins` SET `angemeldet` = '0' WHERE `angemeldet` = '1' AND (TIMESTAMPDIFF(MINUTE, `zuletzt`, NOW()) >= 15)");
}
}
}
public function __destruct() {
$this->connection->close();
}
public function query($query) {
$conn = self::getConnection();
$ret = mysqli_query($conn, $query);
if(!$ret) {
$ret = mysqli_error($conn);
}
return $ret;
}
public function getResult($query) {
return mysqli_fetch_assoc($query);
}
public function update($query) {
$conn = self::getConnection();
mysqli_query($conn, $query);
}
public function prepare($input) {
$conn = self::getConnection();
$ret = mysqli_real_escape_string($conn, $input);
return $ret;
}
private static function getConnection() {
if (self::$db == null) {
self::$db = new Database();
}
return self::$db->connection;
}
}
?>
Ich möchte in anderen Dateien quasi gleichzeitig zwei Verbindungen offen haben. Kann mir da jemand auf die Sprünge helfen? Und wie erwähnt, ich bin in OOP noch Anfänger, also bitte möglichst einfach erklären. Achja, obige Datei ist noch nicht ganz auf OOP umgestellt.
Kommentar