Hallo!
Folgende Situation:
Es gibt mehrere Datenbanken. Eine für alle Installationen meines Projektes (beinhaltet Zugangsdaten für Schul-DB's) und dann weitere, schulspezifische Datenbanken, in denen jeweils andere Dinge stehen (wie zum Beispiel Schüler mit ihren Logindaten, etc.)
Der Benutzer ruft also eine Loginseite auf und gibt eine Schul-ID ein. Nach Buttonklick wird die an ein PHP-Skript übergeben, welche dann aus der Datenbank aller Instanzen die entsprechenden Zugangsdaten für die schulspezifische Datenbank ausliest (anhand der Schul-ID).
Anschließend sollen diese als Variable gesetzt werden, sodass von überall in diesem Skript darauf zugegriffen werden kann. Dabei soll das Ganze allerdings nur für diese Session ersetzt werden und nicht in der Datei. Sodass andere Schüler andere Schul-ID's und damit auch andere Schul-DB's verwenden können.
Wenn der Benutzer dann auf der Loginseite seinen Benutzernamen und sein Passwort eingibt, wird dieses wieder an das PHP-Skript übergeben, welches nun in der schulspezifischen DB nachschaut, ob dort der entsprechende Nutzer existiert.
Folgendes Schema habe ich bis jetzt:
class DB {
private static $_api_username = "root";
private static $_api_password = "";
private static $_api_host = "localhost";
private static $_api_name = "programmingnow_host";
private static $_api;
private static $_db_username = $_SESSION['school_db_user'];
private static $_db_password = $_SESSION['school_db_pass'];
private static $_db_host = "localhost";
private static $_db_name = $_SESSION['school_db_name'];
private static $_db;
function __construct() {
try {
self::$_api = new PDO("mysql:host=" . self::$_api_host . ";dbname=" . self::$_api_name . ";charset=utf8mb4", self::$_api_username , self::$_api_password);
if (isset($_SESSION['school_db_name'])) {
self::$_db = new PDO("mysql:host=" . self::$_db_host . ";dbname=" . self::$_db_name . ";charset=utf8mb4", self::$_db_username , self::$_db_password);
}
}
catch(PDOException $e) {
echo "Datenbankverbindung gescheitert!";
die();
}
}
function connectToSchoolDB($school_id) {
$stmt = self::$_api->prepare("SELECT instance_db_name, instance_db_user, instance_db_pass FROM instances WHERE instance_key=:instance_key");
$stmt->bindParam(":instance_key", $school_id);
$stmt->execute();
$result = $stmt->fetch();
$result['instance_db_name'] = $_SESSION['school_db_name'];
$result['instance_db_user'] = $_SESSION['school_db_user'];
$result['instance_db_pass'] = $_SESSION['school_db_pass'];
}
[..] // Der ganze Rest an Funktionen (wie Login)
}
Der obige Code funktioniert aber nicht.
Könnt ihr mir da helfen? Wie kann ich das realisieren bzw. wo liegt der Fehler?
Danke schon einmal im Voraus!
VG!