[PHP/MySql] Daten von Datenbank A zu DB B?

traffic

Well-known member
5 Mai 2006
675
25
Hallo,

ich habe 2 Datenbanken. Nun möchte ich aus der ersten Datenbank Daten in die 2te Importieren. Jedoch verliert er bei mir immer die Verbindung zur 1ten Datenbank sobald ich auf die 2te zugreife.

PHP:
mysql_connect("localhost","user","pass");  
mysql_select_db("db1"); 
$result = mysql_query("SELECT * FROM tabelle");
$num = ...
for(...){
$row = mys....;
mysql_connect("localhost","user","pass");  
mysql_select_db("db2"); 
mysql_query("INSERT INTO tabelle (id,...) VALUES ('$row[id]',...)");

}

die erste Zeile füllt er richtig aus und ab der 2ten gibt es keine werte mehr.
Was mache ich verkehrt?

MFG
Traffic
 
Wie wäre es den einfach mit
PHP:
INSERT INTO db2.tabelle SELECT * FROM db1.tabelle

Geht natürlich nur wenn der User auf beide Datenbanken zugriff hat.
 
Wie wäre es den einfach mit
PHP:
INSERT INTO db2.tabelle SELECT * FROM db1.tabelle

Geht natürlich nur wenn der User auf beide Datenbanken zugriff hat.

geht leider nicht so, weil ich prüfen muß ob in den einzelnen Zeilen ein wert drin ist und bei der alten tabelle(db1) waren 70 spalten und bei der neuen sind nur 2. hole also aus einer Zeile 31 Werte und mache daraus 30 neue Zeilen in der DB2
 
PHP:
INSERT INTO db2.tabelle (spalte1,spalte2) SELECT eineSpalte, undNochEine FROM db1.tabelle WHERE deineDedingung
 
PHP:
INSERT INTO db2.tabelle (spalte1,spalte2) SELECT eineSpalte, undNochEine FROM db1.tabelle WHERE deineDedingung

vielen dank,
wenn ich es so ausführe passiert leider nichts:

PHP:
mysql_query("INSERT INTO sample.artikel_motortypen (artikelid,typ) SELECT (id, typ) FROM sample-ger.auto_auto WHERE id='1'");
 
Klar, dass du immer die Verbindung zu DB1 "verlierst" beim connecten zu einer Datenbank bekommst du eine Resource zurück, ohne diese Resource zu verwenden, nimmst du immer die letzte Datenbank
 
PHP:
INSERT INTO db2.tabelle (spalte1,spalte2) SELECT eineSpalte, undNochEine FROM db1.tabelle WHERE deineDedingung
weiß jetzt wo der fehler liegt und zwar heißen meine Datenbanken so:
db1044591-ger gibt mein Hoster vor.

Das Script sagt es gibt ein Fehler bei dem -
Was kann ich da machen?

PHP:
mysql_query("INSERT INTO db1044591-shop.artikel_motortypen (artikelid,typ) SELECT (id, typ) FROM db1044591-ger.auto_artikel WHERE id='$row[id]'") or die(mysql_error());
 
Aus dem Kopf heraus, ohne den Code zu testen:
$dbc1 = mysql_connect("localhost","user","pass");
mysql_select_db("db1",$dbc1);
$result = mysql_query("SELECT * FROM tabelle",$dbc1);
$num = ...
for(...){
$row = mys....;
$dbc2 = mysql_connect("localhost","user","pass");
mysql_select_db("db2",$dbc2);
mysql_query("INSERT INTO tabelle (id,...) VALUES ('$row[id]',...)",$dbc2);
}
 
Aus dem Kopf heraus, ohne den Code zu testen:
$dbc1 = mysql_connect("localhost","user","pass");
mysql_select_db("db1",$dbc1);
$result = mysql_query("SELECT * FROM tabelle",$dbc1);
$num = ...
for(...){
$row = mys....;
$dbc2 = mysql_connect("localhost","user","pass");
mysql_select_db("db2",$dbc2);
mysql_query("INSERT INTO tabelle (id,...) VALUES ('$row[id]',...)",$dbc2);
}
danke, bin gerade auf der Arbeit, werde ich heute abend mal ausprobieren ;)
Was gibt es den für einen Fehler?

das ist der akt. Fehler:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-shop.artikel_motortypen (artikelid,typ) SELECT (id, typ) FROM db1044591-ger.aut' at line 1
 
jo mußt mit den "hochkommata" wie ZeroCCC es gepostet hat machen, denn sonst erkennt er durch das '-' die DB nicht (Nimmt das '-' wohl sonst als Minus und nicht als Bindestrich.)
 
Versuch mal das ganze in Form von:
PHP:
`datenbank`.feldname

habs mal schnell geändert, jetzt kommt:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''db1044591-shop'.artikel_motortypen (artikelid,typ) SELECT (id, typ) FROM 'db104' at line 1
 
Du hast auch das falsche genommen wie ich sehe.

nicht Shift+# sondern das neben dem ß mit Shift! dieses Zeichen ` (was erst erscheint wenn du noch eine Taste gedrückt hast)

Ist glaube Akzent (Was man für a,e,i,o und u nutzen kann in anderen Sprachen)
 
PHP:
mysql_query("INSERT INTO `db1044591-shop`.artikel_motortypen (artikelid,typ) SELECT (id, typ) FROM `db1044591-ger`.auto_artikel WHERE id='$row[id]'") or die(mysql_error());
 
Aus dem Kopf heraus, ohne den Code zu testen:
$dbc1 = mysql_connect("localhost","user","pass");
mysql_select_db("db1",$dbc1);
$result = mysql_query("SELECT * FROM tabelle",$dbc1);
$num = ...
for(...){
$row = mys....;
$dbc2 = mysql_connect("localhost","user","pass");
mysql_select_db("db2",$dbc2);
mysql_query("INSERT INTO tabelle (id,...) VALUES ('$row[id]',...)",$dbc2);
}

danke ;) funktioniert

bin nur grad bei diesem problem:
for($n=1;$n<31;$n++){
$typ = ${'row[typ'.$n.']'};
und zwar ist $typ immer leer, obwohl $row[typ1]...$row[typ30] belegt ist.