Я использую следующий код в 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
?
Функция fgetcsv
встретит EOF
, но вы не fgetcsv
из цикла немедленно. Вместо этого вы обрабатываете строку CSV как обычно, прежде чем проверять EOF в состоянии while. Просто добавьте проверку для EOF
сразу после вызова fgetcsv
(а также, возможно, в цикл while). Но вы также можете делать while (true) {...}
а затем "выходить" из цикла while, когда вы сталкиваетесь с EOF
(или если $rr
пуст) сразу после функции fgetcsv
. (Не уверен в синтаксисе php, иначе я бы опубликовал точный код, но эта логика должна работать)