Eintrag in 2 Datenbanken speichern

Hey Leute

Kennt Ihr vlt die Forensoftware VBulletin?
Ich benutze eine solche Software für mein Forum.
Nun hab ich als test eine zweite Datenbank angelegt.
Sie nennt sich test und beinhaltet die Tabelle users mit den Attributen username und password.
Nun möchte ich die register.php so bearbeiten, dass der username und das passwort einerseits in der VBulletindb gespeichert wird(was es ja scho vom code her macht) aber auch gleichzeitig in meine zweite Datenbank.
Mein Code sieht so aus:
[PHP]$result = mysql_query(„USE test“);
$result = mysql_query(„INSERT INTO users(username, password) VALUES(‚$username‘, ‚$password‘)“);
$result = mysql_query(„USE forum“);[/PHP]

Forum ist die Datenbank inder das ganze Forum gespeichert ist. $username und $password sind die zwei Variabeln, die das register.php braucht.
Warum funktioniert nun mein Code nicht?
Mit dem Code hat es übrigens auch nicht funktioniert. Hab einfach keine Variabeln benutzt.
[PHP]$result = mysql_query(„USE test“);
$result = mysql_query(„INSERT INTO users(username, password) VALUES(‚username‘, ‚password‘)“);
$result = mysql_query(„USE forum“);[/PHP]

Freundliche Grüsse
Sylnois

Wie lautet die Fehlermeldung?

Es wird keine Fehlermeldung angezeigt

Hast du error_reporting aktiviert? Siehe die beiden verlinkten Seiten.

Ist aktiviert.

Und die Rückgabe von mysql_query und mysql_error hast du auch versucht abzufragen? Siehe die beiden verlinkten Seiten.

Jo.
Wenn ich der Syntax von mysql_query bspweise falsch ist, kommt ne Fehlermeldung.

Kannst du die Query per phpMyAdmin fehlerfrei ausführen und wird die entsprechende Zeile im Code sicher erreicht?

Im Query per phpmyadmin funktioniert der Code.

Wenn die entsprechenden Zeilen im Script ausgeführt werden, dabei keine Fehlermeldungen generieren, und die Query grundsätzlich funktioniert, weiß ich auch nicht weiter.

Vielleicht hat es was mit der Vbulletinsoftware zutun?
Zuerst wird die config von der Software aufgerufen(database select etc.).
Dann wird halt was mit php gemacht, bis irgendeinmal ich mein Codeabschnitt kommt: Benutze eine andere db und mache kurz was mit der. Benutze dann wieder die andere db.
Ist das überhaupt möglich?

Du unterliegst einen Irrtum hinsichtlich des PHP-MySQL-Moduls und der Funktionsweise von mysql_query(). mysql_query() führt die an die Funktionen übergebenen Statements direkt über die Datenbankverbindung aus, die Du sicher mit mysql_connect() hergestellt hast. Mittels mysql_select_db() solltest Du auch eine Datenbank ausgewählt haben - und diese Einstellung zählt.

Du hast quasi eine Verbindung zur Datenbank1, führst dann

[php]mysql_query(„USE Datenbank“);[/php]

aus was aber eigentlich nichts weiter bewirkt.

Was Du willst kannst Du nur erreichen, wenn Du 2 Datenbankverbindungen öffnest. Für jede Datenbank eine. Dann kannst Du bei mysql_query() als zweiten Parameter jeweils die Variable übergeben über die Du das Statements schicken willst.

Noch einfacher geht das mit einer zentralen Klasse für MySQL-Verbindungen und -Statements. Sowas verwende ich quasi in jedem Projekt, gibt es auch als Vorlage an vielen Stellen zum Download. Diese Klasse musst Du nur pro Verbindung aufrufen, jeweils das Objekt in einer extra Variable speichern und dann kannst Du die Statements direkt über diese Klasse an die gewünschte Datenbank schicken.

Achtung: bei 2 Verbindungen handhabt MySQL den Zeichensatz imho noch einheitlich, d.h. für beide Verbindungen gilt der selbe Zeichensatz, wenn dieser per php angegeben wurde. Das war zumindest früher mal ein Problem. Besser ist es wenn alle beteiligten Datenbanken den selben Zeichensatz haben.

aus was aber eigentlich nichts weiter bewirkt.

Also bei mir wechselt es die DB, auch wenn ich vorher mysql_select_db ausgeführt habe. Mag aber eine Konfigurationseinstellung sein.

Ich bin auch fast überzeugt davon, dass das im Zweifel in irgendeiner Form Fehlermeldungen verursachen würde.

Mein Code sieht nun so aus:
[PHP]mysql_select_db(„test“, $connect1);
$result = mysql_query(„INSERT INTO test.users(username, password) VALUES(‚username‘, ‚password‘)“, $connect1);[/PHP]
Mit dem gehts aber auch nicht. :S
So hast du das doch gemeint @threadi?

Nein, so meinte ich es nicht. Eher so:

[php]$connect1 = mysql_connect(‚localhost‘, ‚mysql_user‘, ‚mysql_password‘);
mysql_select_db(„test“, $connect1);
$connect2 = mysql_connect(‚localhost‘, ‚mysql_user2‘, ‚mysql_password2‘);
mysql_select_db(„test“, $connect2);
$result = mysql_query(„INSERT INTO test.users(username, password) VALUES(‚username‘, ‚password‘)“, $connect1);
$result = mysql_query(„INSERT INTO test.users(username, password) VALUES(‚username‘, ‚password‘)“, $connect2);[/php]

Habe ich in der Form auch noch nicht verwendet, wäre aber logisch, vor allem wenn für beide Datenbanken unterschiedliche Anmeldedaten gelten. Ich würde wie gesagt die Nutzung eine Klasse empfehlen.

Danke!
Hat so funktioniert =D

Okay, jetzt mal ganz im Ernst und ohne das ewige in dubio pro reo: Lies den verlinkten Artikel.

MySQL erzeugt bei sowas Fehlermeldungen. :neutral: