Seite 1 von 1
zwei datenbanken
Verfasst: 07.08.2007 00:32
von uhu_und_hai
guten abend miteinander
ich versuche gerade mithilfe von den datenbankfunktionen von phpbb3 eine verbindung zu einer weiteren datenbank aufbauen. doch leider schlägt das immer fehl, darum mal meine einfache frage: kann man mit php gleichzeitig zu zwei datenbanken verbinden oder geht das nicht?
meine vorgehensweise wahr übrigens diese:
- neues db() objekt erstellen mit eigenen angaben zum server
Problem: folgender fehler:
Table 'test.phpbb_users' doesn't exist [1146]
das heisst das nun phpbb auf einmal versucht auf die zweite datenbank zuzugreiffen.
hat jemand eine lösung für dieses problem? oder, was mir schon reichen würde: ein einfacher zugriff uf tabellen in der selben datenbank, aber mit einem anderen prefix.
schon mal vielen dank
Verfasst: 07.08.2007 01:38
von bantu
Ich denke, wenn du uns den Sinn deiner Aktion nennst, können wir dir besser und schneller helfen.
Gruß,
bantu.
Verfasst: 07.08.2007 10:41
von uhu_und_hai
okay, ich versuchs mal genauer zu beschreiben.
ich versuche auf eine eigene Seite in phpbb inhalt von einer datenbank zu laden. währe dies möglich könnte ich mir ein eigenes kleines CMS erschaffen und mit zwei datenbanken arbeiten. Ich habe nun gemerkt dass es auch reichen würde ein anderes tabellen präfix zu verwenden. (verwende ich dasselbe präfix wird die tabelle unübersichtlich...)
hier mal mein code mit dem ich es versucht habe:
Code: Alles auswählen
<?php
/**
* @ignore
*/
define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './forum/'; //angepasst für meine seite
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
include($phpbb_root_path . 'includes/functions_display.' . $phpEx);
include('./topo_config.' . $phpEx); // meine eigenen config datei
// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup('./topo/startseite');
$topo_db = new $sql_db();
$topo_db->sql_connect($topo_dbhost, $topo_dbuser, $topo_dbpasswd, $topo_dbname, $topo_dbport, false, false);
// We do not need this any longer, unset for safety purposes
unset($topo_dbpasswd);
$sql = 'SELECT test
FROM test';
$result = $topo_db->sql_query($sql);
$test = array();
while ($row = $topo_db->sql_fetchrow($result))
{
$test[] = array(
'test' => $row['test'],
);
}
foreach($test as $m)
{
$template->assign_block_vars('test',array(
'TEST' => $m['test']
)
);
}
$topo_db->sql_freeresult($result);
// Assign index specific vars
$template->assign_vars(array(
'MY_USERNAME' => get_username_string('full', $user->data['user_id'], $user->data['username'], $user->data['user_colour'], $user->lang['GUEST']),
'L_GREET_USER' => sprintf($user->lang['HELLO_WORLD'], $user->data['username']),
)
);
// Output page
page_header($user->lang['STARTSEITE']);
$template->set_filenames(array(
'body' => './topo/startseite.html')
);
page_footer();
?>
ich werde es mal mit einem eigenen präfix versuchen. habe gesehen dass man weitere tabellen ganz einfach in der constatns.php dazufügen kann. dort ist es auch möglich tabellen mit anderem präfix einzufügen. mal schauen ob das klappt. falls jemand eine lösung für zwei datenbanken hat, würde ich mich darüber aber freuen!
Verfasst: 07.08.2007 10:55
von bantu
Wenn du Funktionen von phpBB verwenden willst, wäre ein anderes Präfix aus meiner Sicht auf jeden Fall besser, da in den Funktionen immer die $db global ist.
Verfasst: 07.08.2007 11:06
von uhu_und_hai
ok, dann werde ich mit den präfix arbeiten. ist auch wesentlich einfacher umzusetzten, da ich nur gerade in der tabellendefinition etwas ändern muss und mich nachher nicht mehr darum kümmern muss. (ist doch richtig so, nicht?)