Seite 1 von 2
Zugriff auf 2. Datenbank
Verfasst: 05.01.2010 11:17
von bce
habe daten in einer zweiten datenbank auf die ich aus phpbb heraus zugreifen muss.
in phpbb ist ja eine db angegeben. die daten hierfür werden bei der installstion angegeben und in der config.php gespeichert.
wie kann ich am besten mittels phpbb auf eine zweite datenbank zugreifen?
auf die "normale" greift man ja mittels
Code: Alles auswählen
$sql = "select * from table";
$result = $db->sql_query($sql);
while ($row = $db->sql_fetchrow($result))
.....
zu.
das
signalisiert ja diese db. kann man hier nicht eine zweite einbinden?
der config.php könnte man ja die daten der 2. datenbank hinzufügen. z.b.
der aufruf für die 2. db könnte wie folgt aussehen:
Code: Alles auswählen
$sql2 = "select * from table";
$result2 = $db2->sql_query($sql2);
while ($row2 = $db2->sql_fetchrow($result2))
.....
kann man ein zweites datenbankobjekt
anlegen? wenn ja wo muss ich ansetzen?
ich danke für hilfe.
Re: Zugriff auf 2. Datenbank
Verfasst: 05.01.2010 14:10
von nickvergessen
common.php
finde:
Code: Alles auswählen
// We do not need this any longer, unset for safety purposes
unset($dbpasswd);
danach einfügen:
Code: Alles auswählen
$db2 = new $sql_db();
// Connect to DB
$db2->sql_connect($dbhost, $dbuser, $dbpasswd_2, $dbname_2, $dbport, false, defined('PHPBB_DB_NEW_LINK') ? PHPBB_DB_NEW_LINK : false);
// We do not need this any longer, unset for safety purposes
unset($dbpasswd_2);
Re: Zugriff auf 2. Datenbank
Verfasst: 05.01.2010 14:21
von Pyramide
Die Original-Datenbankverbindung wird in
common.php, Zeile 210 aufgebaut. Die zweite Datenbankverbindung solltest du genauso aufbauen können (du musst lediglich daran denken, diese am Ende wieder zu schließen).
Re: Zugriff auf 2. Datenbank
Verfasst: 06.01.2010 16:01
von bce
funktioniert!!
für interessierte:
öffne common.php
suche nach
danach einfügen
suche nach
Code: Alles auswählen
// Connect to DB
$db->sql_connect($dbhost, $dbuser, $dbpasswd, $dbname, $dbport, false, defined('PHPBB_DB_NEW_LINK') ? PHPBB_DB_NEW_LINK : false);
danach einfügen
Code: Alles auswählen
// Connect to DB 2
$db2->sql_connect($dbhost2, $dbuser2, $dbpasswd2, $dbname2, $dbport2, false, true);
suche nach
Code: Alles auswählen
// We do not need this any longer, unset for safety purposes
unset($dbpasswd);
danach einfügen
in der config.php muss folgendes eingefügt werden:
Code: Alles auswählen
$dbhost2 = 'localhost';
$dbport2 = '';
$dbname2 = 'db2';
$dbuser2 = 'user2';
$dbpasswd2 = 'pass2';
in der functions.php steht folgendes:
Code: Alles auswählen
...
$sql = "select * from table";
$result = $db2->sql_query($sql);
while ($row = $db2->sql_fetchrow($result)) {
...
$db2->sql_freeresult($result);
und suche nach
Code: Alles auswählen
global $db, $config, $template, $SID, $_SID, $user, $auth, $phpEx, $phpbb_root_path;
ersetzen durch
Code: Alles auswählen
global $db, $db2, $config, $template, $SID, $_SID, $user, $auth, $phpEx, $phpbb_root_path;
Re: Zugriff auf 2. Datenbank
Verfasst: 06.01.2010 17:47
von Pyramide
Pyramide hat geschrieben:du musst lediglich daran denken, diese am Ende wieder zu schließen.
Wenn du die Datenbankverbindung grundsätzlich parallel zur ersten öffnest, solltest du diese entsprechend auch parallel zur ersten schließen (
garbage_collection()).
Re: Zugriff auf 2. Datenbank
Verfasst: 06.01.2010 18:11
von bce
ok. danke.
suche in der functions.php nach
Code: Alles auswählen
// Close our DB connection.
if (!empty($db))
{
$db->sql_close();
}
danach einfügen
Code: Alles auswählen
// Close our DB2 connection.
if (!empty($db2))
{
$db2->sql_close();
}
Re: Zugriff auf 2. Datenbank
Verfasst: 07.01.2010 14:33
von nickvergessen
downloads/file.php wird manuell $db->sql_close(); gemacht

Re: Zugriff auf 2. Datenbank
Verfasst: 07.01.2010 15:16
von bce
sollt ich dort wohl auch lieber mal
hinzufügen?
Re: Zugriff auf 2. Datenbank
Verfasst: 08.01.2010 13:15
von oxpus
Ja, das ist damit gemeint

Re: Zugriff auf 2. Datenbank
Verfasst: 08.01.2010 13:45
von bce
ok
