在PHP中解析CSV时再读取一行


Reading one more line when parsing CSV in PHP

我在PHP中使用以下代码读取CSV文件:

  $file = fopen("customers.csv", "r");
  while (!feof($file))
  {
    $rr = fgetcsv($file);
    $name = $rr[0];
    $surname = $rr[1];
    $sql = 'INSERT INTO customer SET ...';
    ...
    $s->execute();
  }
  fclose($file);

该代码将把CCD_ 3文件中的所有记录插入CCD_,但是它试图用CCD_ 5值再插入一行并且失败。

如何更正代码以仅插入在customers.csv文件中?

fgetcsv函数将遇到EOF,但不会立即退出循环。相反,在while条件下检查EOF之前,您可以正常处理CSV行。只需在对fgetcsv的调用之后立即添加对EOF的检查(可能也在while循环中)。但您也可以执行while (true) {...},然后在fgetcsv函数后立即遇到EOF(或者如果$rr为空)时"退出"while循环。(不确定php语法,否则我会发布确切的代码,但这个逻辑应该可以工作)