CSV mittels Array in MySql-Datenbank speichern

Kalito

Erfahrenes Mitglied
Hallo,

da die MySql-Datenbank die LOAD DATA INFILE - Funktion nicht zulässt muss ich die leider über die INSERT INTO funktion meine CSV importieren.
Leider werde die DATEN nicht in der DB gespeichert. WARUM?

PHP:
$handle = fopen('webgains_datenfeed.csv', 'r');
$zeilen = array();


$aktuelleZeile = 0;
while($data = fgetcsv($handle, 1500, ';'))
{
 $server = 'localhost';
        $user = 'root';
        $pw = '';
        $datenbank = 'lensclub';

        $verbindung = mysql_connect($server, $user, $pw);
            if($verbindung){
                $db = mysql_select_db($datenbank);
	 	              mysql_error ();
                echo 'Verbindung steht oder steh nicht';
	 	              if($db){
                             echo '<br/> Datenbank existiert oder existiert nicht<br/><br/>';
                             mysql_query ("INSERT INTO ´datenfeed`
                                                  VALUES ('$daten')");
                      }
             }

  $aktuelleZeile++;
}
fclose($handle);



die echo Ausgaben sind nur zum testen und da sie so oft erscheinen, wei auch Zeilen in der CSV sind, denke ich das es am SQL-Befehl liegt. Aber wo ist der Fehlerteufel versteckt?


Gruß, Pat
 
Hallo,

wo kommt deine Variable $daten her? Meintest du eher $data?
Wenn ja:
Bei $data handelt es sich um ein array! Dieses array musst du zunächst zu einer Zeichenkette zusammenbauen.
Das könntest du zb so machen: $data = implode(",", $data). Dieses "neue" $data kannst du nun in mysql_query verwenden. Bleibt nur noch die Frage offen, ob und wie deine values mit den Tabellenspalten übereinstimmen. So kann es nun passieren, dass du die values evtl. in '' einschließen musst. Gut wäre es, den AUfbau der csv-Datei zu kennen.

Ich sehe das du mit jeder Zeile die Verbindung zur DB neu initialisiert. Das brauchst du nicht.

Gruß
 
Die diese Art von Fragen sehr oft kommt, habe ich mal ein Tutorial geschrieben wie man am besten auf Fehlersuche geht.

PHP MySQL Debug Queries

Geh es doch mal durch und falls du die Lösung nicht findest, poste mal das ausgegebe SQL-Statement ins Forum.

Zudem solltest du die Verbindung vor der SWchelife öffnen und nach der Schleife schliessen. Du musst sie nicht für jeden Durchgang neu aufbauen.
 
Zurück