XML import zu Mysql

Ja den fehler hab ich gelöst, doch er schreibt mir die Daten nicht in in die Datenbank rein und die echo ausgabe sieht so aus:

INSERT INTO importuser (userID, name, vorname, nachname, titel, userID, name, vorname, nachname, titel, userID, name, vorname, nachname, titel, userID, name, vorname, nachname, titel, userID, name, vorname, nachname, titel, userID, name, vorname, nachname, titel, userID, name, vorname, nachname, titel, userID, name, vorname, nachname, titel, userID, name, vorname, nachname, titel, userID, name, vorname, nachname, titel) VALUES ........ aber warum schreibt der das nich in die tabelle****
 
Ich sehs... aber du solltest es selber erlernen *g*

Nimm nun das SQL und teste es mit phhpMyQdmin oder 'Heidi SQL' oder sonst einem DB-Tool aus.
Vergleiche das SQL mit dem was du denkst dass da stehen müsste.

Ein Tipp geb ich dir. Hast du wirklich eine Tabelle mit 10Spalten die den Namen userID haben?
 
also das 10Spalten problem scheint nicht mehr da zu sein aber sonst passiert immer noch nix )-:
was hast du den gesehn?

PHP:
$mysqlspalten = array();
	$mysqlwerte = array();
	$mysqlupdate = array();

	for($i = 0, $mysqlspalten = "", $mysqlwerte = ""; $i < count($array[0]); $i++)
	{
		foreach($array[0][$i] as $Schluessel => $Wert)
		{
			$mysqlspalten[] = $Schluessel;
			$mysqlwerte[] = "'{$Wert}'";
			$mysqlupdate[] = "{$Schluessel} = '{$Wert}'";
		}
	
	
		$arrmysqldml[] = "INSERT INTO $dbtabelle (". implode(', ', $mysqlspalten) .")
		VALUES (". implode(',', $mysqlwerte) .")
		ON DUPLICATE KEY UPDATE" . implode(',', $mysqlupdate) .";";
		
	}
		
	for($i = 0; $i < count($arrmysqldml); $i++)
	{
		echo $arrmysqldml[$i],"\n";
		mysql_query($arrmysqldml[$i]);	
		
	}

So siehts nun aus im mom was ist den mit $mysqlspalten = "" , $mysqlwerte = ""; kann das so bleiben ?
 
Du hast zwar nicht alle items umgesetzt, aber etwa so sollte es gehen (ich kanns natürlich nicht testen)
PHP:
    for($i = 0; $i < count($array[0]); $i++)
    {
    	$mysqlspalten = array();
	    $mysqlwerte = array();
    	$mysqlupdate = array();
        foreach($array[0][$i] as $Schluessel => $Wert)
        {
            $mysqlspalten[] = $Schluessel;
            $mysqlwerte[] = "'{$Wert}'";
            $mysqlupdate[] = "{$Schluessel} = '{$Wert}'";
        }
    
        $arrmysqldml[] = "INSERT INTO {$dbtabelle} (". implode(', ', $mysqlspalten) .")
        VALUES (". implode(',', $mysqlwerte) .")
        ON DUPLICATE KEY UPDATE SET " . implode(',', $mysqlupdate) .";";
        
    }
        
    for($i = 0; $i < count($arrmysqldml); $i++)
    {
        echo $arrmysqldml[$i],"\n";
        mysql_query($arrmysqldml[$i]);    
        
    }

Noch ein Tipp, studiere mal auf php.net den Befehl implode() und mach dich mit Arrays vertrauter - dann würdest du erkennen was falsch war.

Nachtrag:
Hab grad bemerkt, dass ich noch den Befehl SET im Update vergessen habe. Findet man aber mit meinem Tutorial dasi ch weiter oben gepostet habe heraus....
 
So hab jetzt noch mal alles so überarbeitet wie in deinem beispiel nun schreibt er mir immer noch nix rein aber hab nun wieder eine SQL Fehler meldung :

Unknown column 'SETuserID' in 'field list'Übertragung fehlgeschlagen.

Hängt mit dem ON DUPLICATE KEY UPDATE SET zusammen, wenn ich den raus nehme bin ich wieder da wo ich am Anfang war kann dann wieder nur eintragen aber wenn sich was ändert in der datei dann überschreibt der nix
 
Zuletzt bearbeitet:
Die Fehlermeldung ist eigentlich eindeutig. Ich empfehle dir gemäss meinem Tutorial vorzugehen und den UPDATE-Befehl von MySQL mal zu studieren und du wirst den Fehler ganz schnell finden und weisst erst noch wie man Fehler findet....
 
Ja hab nun mal dein Tutorial weg genommen und mir auch den Updatebefehl angesehn, aber den Fehler hab ich leider noch nicht wirklich finden können...
 
'SETuserID'

Fehlt da nicht ein Leerzeichen? Sollte es nicht heissen '... SET userID ....'
Würdest du das genaue SQL mal studieren solltest du das eigentlich sehen.
Ansonsten wäre es schön, das ausgegebene SQL hier zu posten. Erleichtert ungemein die Hilfestellung
 
Ja das leer zeichen hab ich gesehen, aber das war es nicht denn seitdem kommt immer :

Übertragung fehlgeschlagen. Grund: 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 'SET (userID = '1',name = 'Sascha',vorname = 'Sascha',nachname = 'Wohlt',tit' at line 3
 
'Wohlt',tit' Was ist das?

und zudem:
Ansonsten wäre es schön, das ausgegebene SQL hier zu posten. Erleichtert ungemein die Hilfestellung
Ansonsten wäre es schön, das ausgegebene SQL hier zu posten. Erleichtert ungemein die Hilfestellung
Ansonsten wäre es schön, das ausgegebene SQL hier zu posten. Erleichtert ungemein die Hilfestellung
.. hab gelernt, dass man einigen Leuten alles drei mal sagen muss.....

Nachtrag:
Seit wann gibts beim SET eine Klammer?
 
Zurück