[MYSQL] ausgelesene Daten in andere DB eintragen

SQL:
SELECT user_id FROM users ORDER BY orte ASC
INTO allgemein ('user_id') VALUES ('$row['user_id']')

So bleibt alles bei Mysql was von der Geschwindigkeit her extrem schnell ist, im gegensatz zu PHP.
 
Zuletzt bearbeitet von einem Moderator:
Noch besser ist untertrieben *g

Wenn du voher für die Tabelle in die du die Ergebnisse einträgst auch noch die Indexe abschaltest, bekommst du noch mehr Geschwindigkeit aus der Abfrage raus.
 
hi @ all.

also es ist super das sich einige begeistern lassen um mir zu helfen, irgendwie bin ich das garnicht gewohnt, deshalb nochmal ein dickes danke an euch.

jedoch muß ich ehrlich sagen das mich das ganze etwas durcheinander bringt, deshalb würde ich es doch gern nochmal mit euch an einem Beispiel testen.
die abfrage und co funktioniert ja und die Verbindung zum einlesen auch, jedoch stehen dann da nicht die Ergebnisse die ich brauche und da komm ich irgendwie nicht weiter.
falls ihr Interesse haben solltet, würde ich mich freuen wenn ihr mir bissel unter die arme greifen könntet, jedoch wäre es schön wenn ihr etwas Rücksicht auf meine anfänglichen Kenntnisse nehmen könntet.



Beispiel:

ich probiere das ganze jetzt mal mit einer Testtabelle aus.

zu erst beginne ich mit der abfrage der Daten die ich brauche, hierfür nutze ich eine etwas andere Form aber ich hoffe das es auch so ok ist.

PHP:
<?php

//dbtest_ausgeben.php

include 'dblogin.php';

//abfrage tabelle

while($row = mysql_fetch_array($ergebnis))

{
  // Anzahl der Felder ermitteln
  $j = mysql_num_fields($ergebnis);
  for($i=0;$i<$j;$i++) {
    // Name des aktuellen Feldes ermitteln
    $k = mysql_field_name($ergebnis,$i);
    // Dem Feldnamen einen Wert zuweisen
    $$k = $row[$k];
    }
// Daten anzeigen (so viele wie benötigt) z.B.
  echo $user_id.", ".$username.", ".$user_password."<BR>";

  }
		
mysql_close($verbindung);
?>
und nun beginnt z.B. mein Problem.

wenn ich nun versuche diese daten per INSERT in die andere db einzu tragen, bekomme ich es nicht in einzelnen datensätzen wieder.
es wird einfach nur eine z.B. Resource id #7 irgentwo eingetragen und nicht die daten die ich eigentlich auslese.
vileicht wäre es doch möglich gemeinsam diesen schritt zu gehen, da ich wohl doch noch nicht so ganz durchsehe.

ich fange einfach mal an:

PHP:
<?php
error_reporting(E_ALL);    
	include 'datenbankverbindung/dblogin1.php';
	include 'dbtest_ausgeben.php';

    // Konfigurationsdatei laden
	        if(!@mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS)) {   
				die("Es konnte keine Verbindung aufgebaut werden"); // Script beenden    
			}        
				echo "Verbindung wurde aufgebaut<br />\n";        
				if(!mysql_select_db(MYSQL_DATABASE)) {            
				die("Konnte Datenbank nicht benutzen, Fehlermeldung: ".mysql_error());        
			}            
				echo "Die Datenbank wurde ausgew&auml;hlt"; 
                       
	// MySQL-Querys senden


$eintrag = "INSERT INTO testtabelle (user_ids, usernamen, user_passwort) VALUES ('$ergebnis')";

	$eintragen = mysql_query($eintrag) OR die(mysql_error());
				
if($eintragen == true)
   {
   echo "Eintrag war erfolgreich";
   }
   else
   {
   echo "Fehler beim Speichern";
   }
	
?>

also irgendwo ist da der Wurm drin, ich hoffe das ihr mir da weiter helfen könnt, aber nicht auslachen. ;)

Mfg Pretorian

P.S. ich habe die Tipps mal noch nicht mit übernommen, da ich dann noch mehr Unklarheit bei mir erzeuge.
 
Zuletzt bearbeitet:
Möchtest du nur die Daten aus Tabelle 1 in Tabelle 2 laden oder möchtest du die Daten aus Tabelle 1 auf dem Bildschirm ausgeben und danach in Tabelle 2 laden?

Wieso das Insert nicht funktioniert ist klar VALUES ('$ergebnis') muss in VALUES ($ergebnis) geändert werden.

Zu deinem Beispiel mit dem Abfragen:
1. du solltest mysqli benutzen und nciht mehr mysql (wenn du php5 zu verfügung hast)
2. mysql_fetch_array ist eine der langsamsten Möglichkeiten deine Infos zu bekommen
3. versuch es mal mit fetch_assoc()

Hier ein kleines Beispiel zum Abfragen und Ausgeben:
PHP:
$dbc = mysqli_connect("localhost", "root", "", "");
$dateiAbfrage = "Select `datei_name`,`endung`,`endung2`
 From `tabelle`.`datei_liste` where `aktiv` = 1;";

$result = $dbc->query($dateiAbfrage);

while($zeile = $result->fetch_assoc())
{
	echo("
	Dateiname: $zeile['datei_name'] 
	Endung: $zeile['endung'] 
	Endung2: $zeile['endung2']");	
}
$result->close();
 
Möchtest du nur die Daten aus Tabelle 1 in Tabelle 2 laden oder möchtest du die Daten aus Tabelle 1 auf dem Bildschirm ausgeben und danach in Tabelle 2 laden?

Wieso das Insert nicht funktioniert ist klar VALUES ('$ergebnis') muss in VALUES ($ergebnis) geändert werden.

Zu deinem Beispiel mit dem Abfragen:
1. du solltest mysqli benutzen und nciht mehr mysql (wenn du php5 zu verfügung hast)
2. mysql_fetch_array ist eine der langsamsten Möglichkeiten deine Infos zu bekommen
3. versuch es mal mit fetch_assoc()

Hier ein kleines Beispiel zum Abfragen und Ausgeben:
PHP:
$dbc = mysqli_connect("localhost", "root", "", "");
$dateiAbfrage = "Select `datei_name`,`endung`,`endung2`
 From `tabelle`.`datei_liste` where `aktiv` = 1;";

$result = $dbc->query($dateiAbfrage);

while($zeile = $result->fetch_assoc())
{
	echo("
	Dateiname: $zeile['datei_name'] 
	Endung: $zeile['endung'] 
	Endung2: $zeile['endung2']");	
}
$result->close();

also nun verstehe ich schon garnichts mehr.
mit deinem Beispiel weiß ich nix mit Tabelle und Datei_liste anzufangen, den die Tabelle hat ja nur einen Namen .
außerdem bekomme ich egal was ich ausprobiere ne Fehlermeldung auf die Zeile Dateiname: $zeile['datei_name'], da ich es nur mit einem ausprobiert habe.

ich würde halt das ganze erstmal vom Prinzip her verstehen wollen, wie ich die Daten nach meinem Beispiel erstmal in die andere Datenbank übergeben kann, so das auch die Datensätze die ich vorher abfrage auch dort erscheinen.
ich denke das ich im nachhinein ja immernoch andere bzw. bessere Lösungen finden kann.
wenn ich, wie du sagst VALUES ('$ergebnis') muss in VALUES ($ergebnis) geändert werden durchführe, bekomme ich diese Meldung:
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 'id #7)' at line 1.
da weiß ich nun auchnicht, was nun richtig ist und was nicht.


das ist ja nun schon die ganze zeit mein Problem, ich bekomme die Daten einfach nicht in richtigen Datensätzen in die andere Datenbank.
es sollte ja so sein das die Eintragungen dann 1 zu 1 übereinstimmen und ich bei einem neuen Eintrag wieder alles aktualisieren kann oder es sich selbst aktualisiert.

die Daten müssen nicht unbedingt angezeigt werden, ich möchte sie einfach nur von einer Datenbank zur anderen übergeben, da ich diese für andere Dinge auch benötige.
 
Zuletzt bearbeitet:
1. Hast du denn den Vorschlag von Dunas ausprobiert?
SQL:
SELECT user_id FROM users ORDER BY orte ASC
INTO allgemein ('user_id') VALUES ('$row['user_id']')
Ist eine normale SQL-Abfrage. Führe die doch einfach aus.

2. Ist deine Ziel-Tabelle leer? Kann es sein, dass dort der Primärschlüsseleintrag schon existiert und du versuchst da den selben Wert erneut einzutragen?

3. Versuche die Werte einzeln der Abfrage zu übergeben. Etwa so:
SQL:
INSERT INTO testtabelle (user_ids, usernamen, user_passwort)
VALUES ($ergebnis['user_ids'], $ergebnis['usernamen'], $ergebnis['user_passwort']);

Gruß
 
Zuletzt bearbeitet von einem Moderator:
hi @ all.

nach langem hin und her habe ich es nun aufgegeben, da ich einfach nicht weiter komme.
ich habe einfach keine Lösung gefunden um zwei Verbindungen her zu stellen, zu den unterschiedlichen Datenbanken und dann die Daten von der einen abzurufen und diese dann in die andere einzufügen.
ich habe mich sodann wenn auch nicht wirklich mit Begeisterung dafür entschieden, alles auf einer Datenbank zu machen.


PHP:
//Beispiel

error_reporting(E_ALL);
	
	define('MYSQL_HOST',     'localhost');    
	define('MYSQL_USER',     '......');    
	define('MYSQL_PASS',     '......');    
	define('MYSQL_DATABASE', '......');
	
	if(!@mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS)) {   
				die("Es konnte keine Verbindung aufgebaut werden"); // Script beenden    
			}        
				echo "Verbindung wurde aufgebaut<br />\n";        
				if(!mysql_select_db(MYSQL_DATABASE)) {            
				die("Konnte Datenbank nicht benutzen, Fehlermeldung: ".mysql_error());        
			}            
				echo "Die Datenbank wurde ausgew&auml;hlt";


$eintrag = "INSERT INTO `pretorian_user` (`user_ids`,`user_actives`,`usernames`,`user_passwords`) SELECT `user_id`,`user_active`,`username`,`user_password` FROM `pretorian_users` ORDER BY user_id ASC";
	
	$eintragen = mysql_query($eintrag) OR die(mysql_error());
				
if($eintragen == true)
   {
   echo "Eintrag war erfolgreich";
   }
   else
   {
   echo "Fehler beim Speichern";
   }



dies funktioniert auch einwandfrei, auch wenn ich noch nicht ganz damit fertig bin.
ich danke euch auf jedenfall für eure Anregungen!
vielleicht packt mich ja mit der zeit doch nochmal die Lust das ganze erneut aus zu probieren, doch dafür sollte ich wohl noch bissel mehr Einsicht in die ganze Sache nehmen.
dann werde ich erstmal noch schauen was es sonst noch so interessantes hier bei euch gibt und mich bei bedarf zu dem ein oder anderen äußern oder meine anliegen schildern.
bis dahin,

Mfg Pretorian
 
Zurück