当我读取 CSV(使用 PHPExcel,fgetcsv())时,我想导入数据库的行被切断了。
1 fields in line 1:
ProCatId;CatName;CatDescription;CatNameisactive;CatNameiswebactive;ProSubCatId;SubCatName;SubCatDesc;SubcatWebDiscription2;SubcatWebDiscription3;SubcatCatName;SubcatSequencenr;SubCatNameisactive;SubCatNameiswebactive;DisplayMode;ProductId;ProductName;ProductDescription;ProductCatName;ProductSubCatName;Express;NextDayDelivery;Sequencenr;Drukvorm;Afwerking;BreedteDrukwerk;HoogteDrukwerk;Papier;PrinterName;PrinterProductCode;WebDescription;WebDescription2;WebDescription3;DeliveryInfo;NextDayPrice;NextDayTransferPrice;NextDayCostPrice;Meta-Keywords;Meta-Description;URL-Trefwoorden;Titel;Filepath_icons;Format;MaterialType;NoOfPages;PrintFront;PrintBack;BleedTop;BleedBottom;BleedLeft;BleedRight;MINH;MAXH;MINW;MAXW;De
1 fields in line 2:
liveryScheduleId;DeliveryScheduleName;CentralProductDetailId;ClaimsId;ClaimsName;DruktechniekenId;DruktechniekenName;Verzameld op;Vast;Variabel;vorm;"prijs
1 fields in line 3:
drukken
这些字段应该都在第 1 行中。当我使用 php 函数 file_get_contents() 时,内容看起来有效。在Excel中加载文件也没有问题。
我使用以下代码(,分隔):
<?php
if (($handle = fopen($inputFileName, "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$num = count($data);
echo "<p> $num fields in line $row: <br /></p>'n";
$row++;
for ($c=0; $c < $num; $c++) {
echo $data[$c] . "<br />'n";
}
}
fclose($handle);
}
?>
让我们看看文档是怎么说的:
array fgetcsv (
resource $handle
[, int $length = 0
[, string $delimiter = ","
[, string $enclosure = '"'
[, string $escape = "'" ]]]] )
你路过$handle
,很好。
您说的是"在 1000 个字符处切断一行" - 使用您的数据,这可能会成为一个问题,请考虑更高的限制(8000?
你说的是"字段被,
隔开"。看起来他们实际上被;
隔开了。也许这也是问题的一部分?
(此外,fgetcsv 不是二进制安全的,所以如果你的数据不是纯 ASCII,请参阅这个问题。