Domanda

Sto scrivendo uno script PHP che le importazioni di un csv e gli inserti in una tabella, ma ho bisogno di ottenere la prima fila in modo che io possa avere la names..here campo è il mio csv

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

Come si può vedere la prima riga è il nome dei campi che ho bisogno. ecco il mio ciclo

$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"} 

Come faccio ad avere la prima e metterli nelle variabili e continuare il ciclo dei dati utilizzando i campi in una dichiarazione inserto

È stato utile?

Soluzione

sarebbe questo lavoro per voi?

$row = 1;

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

    ++$row;
}

Altri suggerimenti

Prima di tuo blocco, mentre, basta eseguire la funzione fgetcsv una sola volta e memorizzare le intestazioni di campo.

In entrambi i deepsat del o dei metodi di mattmoon9 funzionerà bene. Ecco cosa di mattmoon9 risposta sarebbe simile strutturato in codice (anche sulla base di mio commento alla risposta):

$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
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top