• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Eintrag in 2 Datenbanken speichern

Sylnois

Mitglied
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");

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");

Freundliche Grüsse
Sylnois
 
Und die Rückgabe von mysql_query und mysql_error hast du auch versucht abzufragen? Siehe die beiden verlinkten Seiten.
 
Kannst du die Query per phpMyAdmin fehlerfrei ausführen und wird die entsprechende Zeile im Code sicher erreicht?
 
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");

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);
Mit dem gehts aber auch nicht. :S
So hast du das doch gemeint @threadi?
 
Zuletzt bearbeitet:
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);

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.
 

Neueste Beiträge

Zurück
Oben