如何在CSV文件中删除顶部行(列标题)?

4

我已经编写了一个脚本,可以上传CSV文件并将数据提取到已经创建好的表中。我想让它这样做:第一行(列标题)不会被插入到表中,但是剩余的数据将被插入。

  $fp = fopen($_SESSION['filename'],"r");


while (($data = fgetcsv($fp, 1000, ",")) !== FALSE)

{
    $import="INSERT into csv_table(name,address,age) values('$data[0]','$data[1]','$data[2]')";

    mysql_query($import) or die(mysql_error());

}

fclose($fp);

这是我从CSV文件中提取数据的代码部分。
非常感谢您对此事的任何帮助!
4个回答

15

只需在 while 循环之前添加以下代码以读取第一行:

fgetcsv($fp, 1000, ",");

此后,while循环从第二行开始。


1

可以这样进行一个空白读取:

$fp = fopen($_SESSION['filename'],"r");
$headerLine = true;

while (($data = fgetcsv($fp, 1000, ",")) !== FALSE)

{
        if($headerLine) { $headerLine = false; }
        else {
                $import="INSERT into csv_table(name,address,age) values('$data[0]','$data[1]','$data[2]')";

                mysql_query($import) or die(mysql_error());
        }

}

fclose($fp);

1

别想太多。

在外部创建一个布尔标志,并在进入循环时切换它,而不是导入并使用 if 语句。


0

您可以使用循环外的fgetcsv()函数,然后在数组之后打印第二行的值:

 if (($handle = fopen($target_file, "r")) !== FALSE) {    
   $i=1;
   fgetcsv($handle, 1000, ",");
   while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
    echo "<pre>";
    print_r($data);
    echo "</pre>";  
    $i++;
  }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接