在PHP中解析大型CSV

I have a large CSV I am writing a PHP CLI script to import into an existing PHP application, while utilizing the existing application's ORM to do relationship management between fields (trust me, I looked at a SQL CSV import, its easier this way). The issue at hand is that the CSV data I have is either malformed, or I have my fgetcsv() call wrong.

This is an example data set i'm aiming to import:

id,fname,lname,email

1,John,Public,johnqpublic@mailinator.com

1,Jane,Public,janeqpublic@mailinator.com

And the CSV Import code pretty much takes from the PHP Docs on fgetcsv():

function import_users($filepath) {
  $row = 0;
  $linesExecuted = 0;

  if(($file = fopen($filepath, 'r')) !== false) {
    $header = fgetcsv($file); //Loads line 1

    while(($data = fgetcsv($file, 0, ",")) !== false) {
      $userObj = user_record_generate_stdclass($data);
      //A future method actually pipes the data through via the ORM
      $row++;
    }
    fclose($file);
  } else {
    echo "It's going horribly wrong";
  }

  echo $row." records imported.";
}

The resulting logic of this method is pretty much a % sign, which is baffling. Am I overlooking something?