First element in a while loop?
-
28-09-2019 - |
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
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