Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

fGetCsv only reading first line?

Tags:

php

csv

fgetcsv

I'm trying to use fgetCsv but for some reason it is only reading the first line. Here is the code:

$fieldseparator = ",";
$lineseparator = "\r";


if(!file_exists($csvFile)) {
    echo "<div id='error'>Cannot find uploaded file. Please try again</div>";
    exit;
}

$file = fopen($csvFile,"r");

if(!$file) {
    echo "<div id='error'>Error loading CSV file</div>";
    exit;
}

$size = filesize($csvFile);
if(!$size) {
    echo "<div id='warning'>File is empty</div>";
    exit;
}

$query = "";
$content = fgetcsv($file,$size,$lineseparator);


fclose($file);

foreach($content as $data) {
        $values = explode($fieldseparator,$data);
        $query[$i] = "('".implode("','",$values)."')";
}

This just outputs one line. Here is the CSV file:

TSE-P01,1,WO47653897,RM,EcoQuiet,1
TSE-P02,1,WO47653898,RM,EcoQuiet,1
TSE-P03,1,WO47653899,RM,EcoQuiet,1
TSE-P04,1,WO47653900,RM,EcoQuiet,1
TSE-P05,1,WO47653901,RM,EcoQuiet,1
TSE-P06,1,WO47653902,RM,EcoQuiet,1
TSE-P07,1,WO47653903,RM,EcoQuiet,1
TSE-P08,1,WO47653904,RM,EcoQuiet,1

Any ideas why this might be happening?

like image 705
THEK Avatar asked Nov 12 '11 21:11

THEK


1 Answers

From the docs:

fgetcsv — Gets line from file pointer and parse for CSV fields

If you want more than one line then you need to call it more than once.

like image 125
Ignacio Vazquez-Abrams Avatar answered Sep 28 '22 13:09

Ignacio Vazquez-Abrams