Question

I'm trying to parse a small CSV file and insert the records into MySQL.

The problem I'm having is that the CSV has 150 rows, but only 2 seem to be inserted:

        $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();
         }

If I var_dump($item) I get all 150 records, but only 2 ever get inserted.

I just don't understand why this is happening

Thanks

No correct solution

OTHER TIPS

This line

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

should be

while (($row = $file->fgetcsv($separator)) !== false) {
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top