Дело в том, что ф-я fgets не учитывает особенностей csv файла. Ведь в нем экранируются специальные символы, встречающиеся в тексте (например:
"), посему в базу загоняются двойные значения...
вот кусок csv файла
655NGVK03;"Момент.овс.каша""Вкусново""традицион. 40г 5пак/20";23,08
655NGVK10;"Момент.овс.каша ""Вкусново"" банан 40г 5пак/24";23,08
а вот итог вывода с ф-ей fgets
"Момент.овс.каша""Вкусново""традицион. 40г 5пак/20"
"Момент.овс.каша ""Вкусново"" банан 40г 5пак/24"
и кусок обработаный ф-ей fgetcsv
Момент.овс.каша"Вкусново"традицион. 40г 5пак/20
Момент.овс.каша "Вкусново" банан 40г 5пак/24
Как видишь - разница есть... Хотя вроде все работает, буквы не попадают и т.д., но а что если будет использована
; в тексте? Ее csv экранирует (
test;"test11; test22";123) [test11; test22 - в одной ячейке находились], вот в данном примере функция подумает, что колонок не три, а четыре...
=(
P.S. Совсем забыл сказать, что я поменял разделитель и теперь функция выглядит так:
while ($arData = fgets($file, 4096))
{
$arData = explode(";",$arData);
....