CSV - 不上传所有记录

时间:2014-01-25 15:34:29

标签: php csv fgetcsv

我正在尝试解析一个小的CSV文件并将记录插入MySQL。

我遇到的问题是CSV有150行,但似乎只插入了2行:

        $file = new SplFileObject($uploadedFile);

        $separator = ',';
        $rowCounter = 1;
        $errors = array();

        $fh = fopen($uploadedFile, 'r');
        if(!$fh) die('File no good!');

        // Get headings
        $headings = fgetcsv($fh, 0, ',');
        $num_cols = count($headings);
        $num_rows = 1;

        // Read the file as csv
        while ($row = $file->fgetcsv($separator)) {

            //missed product if num columns in this row not the same as num headings
            if (count($row) != $num_cols) {
                $row = array_pad($row, $num_cols, NULL);
            }

            for ($i=0; $i<count($headings); $i++) {
                $raw_prod[$headings[$i]] = $row[$i];
            }

             $item = new Item();
             $item->name = $raw_prod['NAME'];
             $item->age = $raw_prod['AGE'];
             $item->location = $raw_prod['LOCATION'];
             $item->save();
         }

如果我var_dump($item)我获得了所有150条记录,但只有2条记录被插入。

我只是不明白为什么会发生这种情况

由于

1 个答案:

答案 0 :(得分:0)

这一行

while ($row = $file->fgetcsv($separator)) {

应该是

while (($row = $file->fgetcsv($separator)) !== false) {