Benutzer-Werkzeuge

Webseiten-Werkzeuge


datenbank_oeffnen

Datenbank mit PDO öffnen

Für die Erstellung einer Datenbankverbindung wird generell nur ein neues Objekt der Klasse „PDO“ erzeugt. Beispiel:

$DB = new PDO( 'mysql:host=localhost;dbname=databasename', 'root', '' );

Nach Möglichkeit sollte im Projekt nur eine Datenbankverbindung erstellt werden die von allen Funktionen und Klassen verwendet werden kann. Die Erstellung mehrerer Verbindungen zur gleichen Datenbank bedeuten unnötige Sicherheitsrisiken und Performancenachteile.

Die Erstellung der Datenbankverbindung in einer PHP-Klasse, die durch andere Klassen (wie z. B. Models mit Datenbankzugriff) mit extended erweitert werden soll ist hierfür ungeeignet, da hier für jede erstellte Instanz automatisch eine eigene Datenbankverbindung erstellt wird.

Die geeignetste Methode ist die Erstellung einer PHP-Klasse, die ein PDO-Objekt erstellt und dieses per globale Variable in allen Scripten zur Verfügung stellt. Diese Variable kann dann in allen Klassen, die einen Zugriff auf die Datenbank benötigen, im Constructor eingebunden werden. Idealerweise wird die Methode, also das Öffnen der Datenbankverbindung, in einer globalen Konfigurationsdatei aufgerufen, welche in jede Projektseite eingebunden wird.

class Database
{
    /**
     * DB constructor.
     */
 
    public static function openDB()
    {
        try
        {
            return new \PDO( 'mysql:host=localhost;dbname=databasename', 'root', '' );
        }
        catch( PDOException $e )
        {
            exit( 'Unable to connect Database. Error-Message: ' . $e->getMessage() );
        }
    }
}
 
$DB = Database::openDB(); // initiale database as global variable
 
class User
{ 
    private $DB;
 
    public function __construct()
    {
        global $DB;
        $this->DB = $DB;
    }

Jetzt repräsentiert die Variable $this→DB die geöffnete Datenbankverbindung und steht in der gesamten PHP-Klasse „User“ zur Verfügung.

Verbindung mit einer PostgreSQL-Datenbank herstellen:

try {
	$DB = NEW PDO( "pgsql:host=" . DB_HOST . ";dbname=" . DB_NAME, DB_USER, DB_PASS );
}
catch( PDOException $e ) {
	exit('Unable to connect Database.');
}
datenbank_oeffnen.txt · Zuletzt geändert: 2016/07/08 00:00 (Externe Bearbeitung)