Mehrere Instanzen einer Datenbankverbindung mit PEAR::MDB2 und statischemDatenbankhandler
am 21.09.2006 11:45:36 von Helmuth GronewoldHallo NG,
ich schreibe gerade ein Skript, welches mir Daten in eine Datenbank
schreibt. Ich benutze dafür PEAR::MDB2 und habe nun ein Problem mit dem
statischen Datenbankhandler.
Ich brauche 3 Verbindungen zur Datenbank:
- Lesen
- Schreiben
- Lesen aus einer openGeoDB
Das doofe ist, dass mir der klasseninterne Datenbankhandler beim
aufrufen von MDB2::factory(); jedes mal überschrieben wird.
Mein Skript sieht ungefähr so aus:
// file Tools.php
class Tools {
[...]
public static function getZipcode ($location, $dbDsnReadGeo) {
$dbReadGeo = MDB2::factory($dbDsnReadGeo);
//do database stuff
}
[...]
}
// file mainScript.php
$dbRead = MDB2::factory($dbDsnRead);
$dbWrite = MDB2::factory($dbDsnWrite);
while ($something) {
Tools::getZipcode($myLocation, $dbDsnReadGeo);
// do read and write stuff with $dbRead and $dbWrite
// hier benutze ich auch $dbWrite->extended->autoExecute();
}
?>
Das Skript endet mit der Meldung:
[Native message: Table 'opengeodb.mytable' doesn't exist]
Es wird also der Datenbankhandler der GeoDB-Verbindung benutzt.
Wenn ich versuche die Verbindungen zu instanziieren
($dbRead=new MDB2(); $dbRead->connect($dbDsnRead)), gibt es einen Fehler
der wegen MDB2::query(); meckert. Allerdings rufe ich query() so
nirgendwo auf sondern immer mit $dbRead->query();
Ich habe ausserdem probiert, das MDB2-Objekt $dbReadGeo mit
$dbReadGeo->disconnect(); und unset($dbReadGeo); zu behandeln aber das
will nicht helfen :(
Hat einer von euch einen Tipp für mich?
Gruß,
Helmuth