• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Import mit statischem feld

Tectum

New member
Hy hab ein import
PHP:
$query = "INSERT INTO `ava_kunden` (`anrede`, `vname`, `nname`, `str`, `plz`, `ort`, `tel`, `gebdat`, `kontinh`, `bank`, `blz`, `kontnr`, `auftrag`, `agent`) VALUES ";
	while($line = fgets($file)){
		$line = preg_replace("/\\r?\\n$/", "", $line);
		$eintraege = explode(";", $line);
		if (count($eintraege) != 14) continue;
		else {
			for ($j = 0; $j < 14; $j++){
				$eintraege[$j] 	= "'" . mysql_real_escape_string($eintraege[$j]) . "'";
			}
			$res = mysql_query($query . "(" . implode(", ", $eintraege) . ")");
			
			if (!$res){
				die("Die Abfrage \"" . $query . "(" . implode(", ", $eintraege) . ")" . "\" konnte nicht ausgeführt werden: " . mysql_error() . " (Fehlernr.: " . mysql_errno() . ")");
			}
		}
	}

das hab ich zu dem umgebaut, weil ich ein statisches feld brauche:

PHP:
$query = "INSERT INTO `ava_kunden` (`anrede`, `vname`, `nname`, `str`, `plz`, `ort`, `tel`, `gebdat`, `kontinh`, `bank`, `blz`, `kontnr`, `auftrag`, `agent`, `datensatz`) VALUES ";
	while($line = fgets($file)){
		$line = preg_replace("/\\r?\\n$/", "", $line);
		$eintraege = explode(";", $line);
		if (count($eintraege) != 15) continue;
		else {
			for ($j = 0; $j < 14; $j++){
				$eintraege[$j] 	= "'" . mysql_real_escape_string($eintraege[$j]) . "'";
			}
			$eintraege[15] 		= "'test'";
			$res = mysql_query($query . "(" . implode(", ", $eintraege) . ")");
			
			if (!$res){
				die("Die Abfrage \"" . $query . "(" . implode(", ", $eintraege) . ")" . "\" konnte nicht ausgeführt werden: " . mysql_error() . " (Fehlernr.: " . mysql_errno() . ")");
			}
		}
	}

jetzt funktionierts aber nicht mehr egal wie ichs drehe, das hab ich falsch gemacht?
 
Wie ist die Fehlermeldung?

PS: für jede Zeile ein eigenes Query starten ist nicht besonders effektiv...
 
Leider gibt der mir kein error aus trotz error_ALL :(
Wie kann man das denn ohne Query machen? Dachte das geht nur so
 
Natürlich muss du ein query starten - aber nur einen einzigen und nicht pro Zeile einen...

PS: der 15. Eintrag in einem Array hat den Index 14...
 
ok hab so gemacht:
PHP:
else {
			for ($j = 0; $j < 13; $j++){
				$eintraege[$j] 	= "'" . mysql_real_escape_string($eintraege[$j]) . "'";
			}
			$eintraege[14] 	= "test";
			$res = mysql_query($query . "(" . implode(", ", $eintraege) . ")");
			
			if (!$res){
				die("Die Abfrage \"" . $query . "(" . implode(", ", $eintraege) . ")" . "\" konnte nicht ausgeführt werden: " . mysql_error() . " (Fehlernr.: " . mysql_errno() . ")");
			}
		}

Jetztbekomm ich folgende Fehlermeldung:
konnte nicht ausgeführt werden: Unknown column 'test' in 'field list' (Fehlernr.: 1054)
 
Sollen wir dir jetzt die Fehlermeldung übersetzen?

Bevor du die Query ausführst, lass sie dir mal ausgeben und schau sie dir an.
Sinnvoller wäre es jedoch wenn du alle Daten mit einem Schwung in die Datenbank eingibst.
Dein Query müsste dann so aussehen:
Code:
INSERT INTO table (col1, col2, col3....) VALUES
(val1, val2, val3 ....),
(val1, val2, val3....),
....
Das geht sehr viel schneller!
 
ja die fehlermeldung heißt ja, dass er die column 'test' nicht findet, ist ja auch nicht da. Ich will ja den eintrag test in die column datensatz eintragen, hab ich wohl einen folgeschweren Denkfehler. wie pack ich denn eine statische sache hier der text 'test' in die column 'datensatz'?
 
OK, hab jetzt dass der wieder importiert:
PHP:
$query = "INSERT INTO `ava_kunden` (`anrede`, `vname`, `nname`, `str`, `plz`, `ort`, `tel`, `gebdat`, `kontinh`, `bank`, `blz`, `kontnr`, `auftrag`, `agent`, `datensatz`) VALUES ";
	while($line = fgets($file)){
		$line = preg_replace("/\\r?\\n$/", "", $line);
		$eintraege = explode(";", $line);
		if (count($eintraege) != 14) continue;
		else {
			for ($j = 0; $j < 14; $j++){
				$eintraege[$j] 	= "'" . mysql_real_escape_string($eintraege[$j]) . "'";
			}
			$eintraege[14] 	= "'test'";
			$res = mysql_query($query . "(" . implode(", ", $eintraege) . ")");
			
			if (!$res){
				die("Die Abfrage \"" . $query . "(" . implode(", ", $eintraege) . ")" . "\" konnte nicht ausgeführt werden: " . mysql_error() . " (Fehlernr.: " . mysql_errno() . ")");
			}
		}
	}

aber statt 'test' importiert der mir '0' in der column 'datensatz'....wie kann das denn jetzt?
 
Zurück
Oben