我一直在努力将csv文件导入mysql数据库。问题是我的客户端已经获得了一些格式错误的文件。行以43结束,但文件下降到65078 !!
导入时,脚本将永远存在。我该怎么做才能确保只导入0到44之间的行?这是我正在使用的代码。
<table>
<?php
//fgetcsv($handle, 1024, delimiter)
$file = fopen("prices.csv", "r");
$row = 0;
while($csv_line = fgetcsv($file,1024)) {
if($row == 4){
echo "How many headers do we have: ".count($csv_line)."<tr>";
foreach($csv_line as $header){
if($header !== NULL){
print "<td>$header</td>";
}
}
echo "</tr>";
}
if($row > 6) {
echo '<tr>';
for ($i = 0, $j = count($csv_line); $i < $j; $i++) {
echo '<td>'.$csv_line[$i].'</td>';
}
echo "</tr>\n";
} else {
$row++;
}
}
?>
</table>
答案 0 :(得分:4)
如果填充的行数未修复,您可以使用类似的方法:
if (empty($line)) { break; }
您的评论让我想出更好的解决方案:
此处显示http://php.net/manual/en/function.fgetcsv.php“CSV文件中的空白行将作为包含单个空字段的数组返回”,这样可能会有所帮助:
while(($csv_line = fgetcsv($file,1024)) && $csv_line[0]) {
只有在找到空行时才会读取。
答案 1 :(得分:0)
在循环底部添加if ($row >= 44) { break; }
,一旦到达第44行,它就会退出。