Question

I am writing a PHP script that imports a csv and inserts into a table but i need to get the first row so i can have the field names..here is my csv

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

As you can see the first row is the name of the fields that i need. here is my loop

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

How do i get the first and put them in variables and continue the loop of the data using those fields in an insert statement

Was it helpful?

Solution

Would this work for you?

$row = 1;

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

    ++$row;
}

OTHER TIPS

Prior to your while block, just run the fgetcsv function a single time and store the field headings.

Either deepsat's or mattmoon9's methods will work fine. Here's what mattmoon9's answer would look like structured in code (also based on my comment on the answer):

$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
}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top