2016-12-16 2 views
0

Ich habe eine Master-Datenbank, die alle anderen Datenbanknamen hat. Wenn sich ein Benutzer anmeldet, finde ich den passenden Datenbanknamen in dieser Master-Datenbank und verwende diesen Namen, um den Benutzer mit dem System zu verbinden Nach dem Abrufen des Datenbanknamens speichere ich ihn als eine Sitzung und übergebe diese Sitzung an den Datenbanknamen für meine andere Datenbankverbindung. Dies ist, wie ich den Benutzer an das System anschließenÄndern des Datenbanknamens von unterwegs php

class DataDB extends mysqli { 

// single instance of self shared among all instances 
private static $instance = null; 
// db connection config vars 
private $dbName = $_SESSION['dname']; 
private $dbHost = "localhost"; 

//This method must be static, and must return an instance of the object if the object 
//does not already exist. 
public static function getInstance() { 
    if (!self::$instance instanceof self) { 
     self::$instance = new self; 
    } 
    return self::$instance; 
} 

bisher seine Weigerung ist immer diesen Fehler Einlesefehler zu arbeiten: Syntaxfehler, unerwartete ‚$ _SESSION‘ (T_VARIABLE). Gibt es auch eine bessere Möglichkeit, dies ohne Sitzung zu tun

Antwort

0

Ändern Sie die Art, wie Sie die private Eigenschaft zuweisen, indem Sie es in der __construct() Methode Ihrer Klasse festlegen.

Obwohl ich dies nicht empfehlen, verwenden Sie eine Konfigurationsdatei, können Sie diese Symphony component obwohl verwenden. Hier haben Sie eine example.

auch eine kurze Anleitung für die Verwendung von composer könnten Sie helfen

EDIT:

private function __construct() { 
    $this->dbName = $_SESSION['dname']; 
    parent::__construct($this->dbHost, $this->user, $this->pass, $this->dbName); //or pass it directly 
} 
+0

dank viel, es zu betrachten jetzt @ka_lin – hamobi

+0

obwohl meine bearbeitete Version prüfen, meine Misstake –

+0

dies, wie ich zuweisen es 'parent :: __ Konstrukt ($ this-> dbHost, $ this-> Benutzer, $ this-> pass, $ this-> dbName);' – hamobi

Verwandte Themen