Frage

Ich schreibe ein PHP-Skript, dass die Einfuhren eine csv und Einfügungen in eine Tabelle, aber ich brauche die erste Reihe zu bekommen, so dass ich das Feld names..here ist haben kann meine csv

id  artist          song           
11  NewBee          great stuff
10  anotherNewbee   even better   
6    NewArtist       New song

Wie Sie die erste Zeile sehen kann, ist der Name der Felder, die ich brauche. hier ist meine Schleife

$handle = fopen('csvs/'.$_FILES["csv"]["name"], 'r');

while (($data = fgetcsv($handle, 1000, ',')) !== FALSE) {
 print_r($data); 
 //do something with it but i need the first time around 


 array(3) { [0]=> string(2) "id" [1]=> string(6) "artist" [2]=> string(4) "song" } 
 array(3) { [0]=> string(2) "11" [1]=> string(6) "NewBee" [2]=> string(1) "great stuff" }  
 array(3) { [0]=> string(2) "10" [1]=> string(13) "anotherNewbee" [2]=> string(1) "even better"} 

Wie kann ich die erste bekommen und sie in Variablen setzen und die Schleife der Daten, diese Felder in einer INSERT-Anweisung mit

weiter
War es hilfreich?

Lösung

würde diese Arbeit für Sie?

$row = 1;

while (($data = fgetcsv($handle, 1000, ',')) !== FALSE) {
    if($row == 1) {
        // do something
    }
    else
    {
        // do something
    }

    ++$row;
}

Andere Tipps

Vor Ihrem während des Block, führen Sie einfach die fgetcsv Funktion ein einziges Mal und speichert die Feldüberschriften.

Entweder deepsat oder die mattmoon9 Methode wird gut funktionieren. Hier ist, was mattmoon9 Antwort würde wie in Code strukturiert aussehen (auch basierend auf meinen Kommentar zu der Antwort):

$handle = fopen('csvs/'.$_FILES["csv"]["name"], 'r');

if (($columns = fgetcsv($handle, 1000, ',')) !== false) {
    while (($data = fgetcsv($handle, 1000, ',')) !== false) {
        // Process data
    }

    // Insert into database using $columns as table column names
} else {
    // The file couldn't be parsed as CSV
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top