Hi!
Ich habe es mir einfach gemacht und eine mySQL-Klasse aufgebaut, über die ich bisher alle DB-Funktionen laufen ließ. Leider ist eine neue Anforderung, daß in einem Projekt zwei Datenbanken gleichzeitig abgefragt werden müssen ... Theoretisch ist meine Klasse so allgemein aufgebaut, daß ich einfach zwei Objektinstanzen bilden kann und beide mit unterschiedlichen DB-Infos (User, Pass, Server, DBName) versorgen kann, doch eigenartiger Weise führt das initialisieren des zweiten DB-Objektes dazu, daß die Connection des ersten mit der des zweiten überschrieben wird. Scheinbar greifen die Instanzen über $this nicht auf ihre eigenen Variablen, sondern auf die der Mutterklasse zu, ansonsten kann ich mir nicht erklären, warum die Variable $CONN der ersten DB nach der Initialisierung der zweiten DB deren $CONN enthält.
Irgendwelche Ideen?
Gruß Patrique
Die Klasse clsMySQL in mysql.php:
============================
Die Objektinstanzierung:
============================
Ich habe es mir einfach gemacht und eine mySQL-Klasse aufgebaut, über die ich bisher alle DB-Funktionen laufen ließ. Leider ist eine neue Anforderung, daß in einem Projekt zwei Datenbanken gleichzeitig abgefragt werden müssen ... Theoretisch ist meine Klasse so allgemein aufgebaut, daß ich einfach zwei Objektinstanzen bilden kann und beide mit unterschiedlichen DB-Infos (User, Pass, Server, DBName) versorgen kann, doch eigenartiger Weise führt das initialisieren des zweiten DB-Objektes dazu, daß die Connection des ersten mit der des zweiten überschrieben wird. Scheinbar greifen die Instanzen über $this nicht auf ihre eigenen Variablen, sondern auf die der Mutterklasse zu, ansonsten kann ich mir nicht erklären, warum die Variable $CONN der ersten DB nach der Initialisierung der zweiten DB deren $CONN enthält.
Irgendwelche Ideen?
Gruß Patrique
Die Klasse clsMySQL in mysql.php:
============================
PHP:
Class clsMySQL
{
var $USER; // Benutzer-Login
var $PASS; // Passwort
var $SERVER; // Server-Name
var $DBNAME; // Datenbank-Name
var $CONN; // Connection
function init ($user, $pass, $server, $dbname)
{
$this->USER = $user;
$this->PASS = $pass;
$this->SERVER = $server;
$this->DBNAME = $dbname;
$conn = mysql_connect($server, $user, $pass);
if(!$conn)
{
echo "Connection konnte nicht aufgebaut werden<BR>\n";
}
if(!mysql_select_db($dbname, $conn))
{
echo "DBSelect konnte nicht ausgeführt werden<BR>\n";
}
$this->CONN = $conn; // !!!! HIER SCHEINT DAS PROBLEM ZU LIEGEN
return true;
} // function init
... Hier folgen alle Methoden der Klasse, die ich aus Platzgründen hier auslasse
}
============================
PHP:
...
include("mysql.php");
// MySQL-Instanzen ableiten
$db1 = new clsMySQL;
$db2 = new clsMySQL;
// MySQL-Instanzen initialisieren
if (!$db1->init($DB1_USER, $DB1_PASS, $DB1_SERVER, $DB1_DBNAME))
{
echo "Datenbank (db1) konnte nicht geöffnet werden<BR>\n";
exit;
}
if (!$db2->init($DB2_USER, $DB2_PASS, $DB2_SERVER, $DB2_DBNAME))
{
echo "Datenbank (db2) konnte nicht geöffnet werden<BR>\n";
exit;
}
...