PHP PDO-Verbindung
Ich soll erstellen einer connection-Klasse für die Datenbankverbindung mit PDO in PHP
hier ist mein code :
<?php
class DatabaseConnection {
private $dbname = "db_01";
private $host = "localhost";
private $user = "xxx";
private $password = "xxxxxx";
private $port = 5432;
private $DBH;
public function __construct() {
try {
$this->DBH = new PDO("pgsql:host=$this->host;port=$this->port;dbname=$this->dbname;user=$this->user;password=$this->password");
} catch(PDOException $e) {
echo $e->getMessage();
}
}
public function disconnect() {
$this->DBH = null;
}
}
?>
Für die Abfrage in der PDO, die ich verwenden muss $DBH->query('SELECT * from user');
aber wie, wenn ich user meine connection-Klasse in einer anderen Klasse ?
Beispiel
<?php
include "DatabaseConnection.php";
class User {
private $connection;
public function getUser() {
$this->connection = new DatabaseConnection();
$STH = $this->connection->query('SELECT * from User');
}
}
?>
Aber es funktioniert nicht.
Jede Stelle kann mir helfen ? Danke 🙂
UPDATE :
Folgen nach Jona empfehlen,
<?php
class DatabaseConnection extends PDO {
private $dbname = "db_01";
private $host = "localhost";
private $user = "xxx";
private $password = "xxxxxxxxx";
private $port = 5432;
public function __construct() {
try {
parent::__construct("pgsql:host=$this->host;port=$this->port;dbname=$this->dbname;user=$this->user;password=$this->password");
} catch(PDOException $e) {
echo $e->getMessage();
}
}
public function disconnect() {
$this = null;
}
}
?>
bekam ich die Nachricht "Die Verbindung wurde zurückgesetzt" im browser, was ist falsch ?
- Könnten Sie die Fehlermeldung oder eine Beschreibung, was genau nicht? Meine Vermutung im moment ist, dass es keine Methode mit dem Namen
query
imDatabaseConnection
-Klasse. - Nein, nichts angezeigt, nur bekam nichts. haben Sie PDO ?
- Wenn nichts angezeigt wird dann gibt es irgendwann keine Fehler und das Skript erzeugt keine Ausgabe. Auf der anderen Seite in PHP könnte das unterdrücken von Fehlermeldungen. Schauen Sie in Ihrer php.ini wenn
display_errors
ist auf underror_reporting
eingestellt istE_ALL | E_STRICT
. Wenndisplay_errors
ist auf und es gibt immer noch keine Ausgabe, die Sie sollte hinzufügenecho "hello world";
um zu überprüfen, ob das Skript ordnungsgemäß ausgeführt wird.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dass wird nicht funktionieren. Sie müssen entweder erstellen Sie eine Methode, die nennt
query
im PDO:verlängern oder PDO.
Update:
Auf der anderen Seite, es gibt sehr wenig Sinn, das einwickeln der PDO-Klasse an alle. Warum nicht erstellen Sie einfach ein PDO-Objekt direkt?