fgetcsv csv import DB. immer nur ein Datensatz

xthetronx

Erfahrenes Mitglied
Hallo zusammen,

beisse mir gerade die Zähne, an einem vermeintlich leichten Import.

Ich habe eine Tabelle mit über 30 000 Stadtnamen, welche ich in die DB schreiben will.
Unten aufgeführter Code soll dies bewerkstelligen.
Leider passiert nicht viel, ausser dass anscheinend die Schleife nur 1x durchlaufen wird und das war´s. :confused:
Code:
<?php
include("include/dbconnect.php");  

$handle = fopen('stadt.csv', 'r');    

while($data = fgetcsv($handle, 31000, ';')) {
    $sql = mysql_query("INSERT INTO autocomplete (stadt) VALUES ('$data[0]')");
    echo $data[0]." <br />"; 
}
?>

In der fgetcsv() habe ich auch das Trennzeichen angegeben, obwohl ich nur eine Spalte (die Stadt) habe. Aber auch, wenn ich es weg lasse, passiert nichts.
Ich bin da mit meinem Latein am Ende und wäre dankbar für jeden Tip.

Gruß

Torsten
 
Also so leid es mir tut, aber ich habe deinen Code gerade kopiert und getestet. Bei mir läuft er ohne Probleme. Das einzige was ich bei mir gemacht habe war die "include" und die "SQL" Zeile auskommentiert.

Der Fehler müsste also wo anders liegen.
 
Versuche es mal mit:
PHP:
$handle = fopen('stadt.csv', 'r');  
$data = fgetcsv($handle, 31000,',');
  for ($c=0; $c < count($data); $c++) {     
      echo $data[$c] . "<br>\n";            
  }  
fclose ($handle);

€: Ich habe den gleichen Fehler wie xthetronx. Mit der von mir geposteten Variante läuft es bei mir. Habe die einzelnen Felder in der CSV mit einem ',' getrennt.

€2: Wenn ich bei mir die include und das Statement auskommentiere läuft es trotzdem nicht korrekt.
€3: Unter der Bedingung, dass jede Zeile der CSV nur einen Wert enthält läuft dein Code bei mir auch.
Gruß
 
Zuletzt bearbeitet:
Was vielleicht noch wichtig ist, da nur ein Wert je Zeile in der CSV Datei steht, darf am Zeilenende (und somit in der ganzen Datei) kein ";" stehen !!
 
Danke für die Antworten.
Ich habe einen Import, genau mit diesem Script schon vorher durchgeführt, ohne Probleme und kann das nicht ganz nachvollziehen.
Ich habe mir jetzt mit SQL-Abfragen geholfen, was zwar länger gedauert hat, aber immerhin funktioniert.

Vielen Dank nochmal

Gruß

Torsten
 
Zurück