Чтение еще одной строки при разборе CSV в PHP

0

Я использую следующий код в 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);

Код будет вставлять все записи в файл CSV в таблицу customer, но он пытается вставить еще одну строку с значениями NULL и сбой.

Как вы исправите код, чтобы вставить только количество строк, находящихся в файле customers.csv?

Теги:
csv

1 ответ

1
Лучший ответ

Функция fgetcsv встретит EOF, но вы не fgetcsv из цикла немедленно. Вместо этого вы обрабатываете строку CSV как обычно, прежде чем проверять EOF в состоянии while. Просто добавьте проверку для EOF сразу после вызова fgetcsv (а также, возможно, в цикл while). Но вы также можете делать while (true) {...} а затем "выходить" из цикла while, когда вы сталкиваетесь с EOF (или если $rr пуст) сразу после функции fgetcsv. (Не уверен в синтаксисе php, иначе я бы опубликовал точный код, но эта логика должна работать)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню