php - 忽略导入 csv 时的第一行

标签 php mysql

我想忽略 csv 导入文件的第一行。

$handle = fopen($_FILES['filename']['tmp_name'], "r"); //Membuka file dan membacanya
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
    $import = "INSERT into t_dil_lpb  (id_pelanggan,nama_pelanggan,gardu,tiang,lat,lon,tarif_daya,no_met,alamat,no_tlp,th_buat,kwh,segel,tegangan,arus,daya,total,sisa,idx,merek,mcb,display,ada,performansi,kode_pesan,waktu_ambil,keterangan,area,rayon)
                values('$data[0]','$data[1]','$data[2]','$data[3]','$data[4]','$data[5]','$data[6]','$data[7]','$data[8]','$data[9]','$data[10]','$data[11]','$data[12]','$data[13]','$data[14]','$data[15]','$data[16]','$data[17]','$data[18]','$data[19]','$data[20]','$data[21]','$data[22]','$data[23]','$data[24]','$data[25]','$data[26]','$area','$rayon')"; //data array sesuaikan dengan jumlah kolom pada CSV anda mulai dari “0” bukan “1”
    mysql_query($import) or die(mysql_error());
}

最佳答案

像这样

$row = -1;

 while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
    ++$row;
    if($row == 0 ) continue; 
    ...

我们从 -1 开始,这样我们就可以在任何事情之前增加行数。

另一种方法是创建 header 数组:

$headers = fgetcsv($handle, 1000, ",");

 while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
    $row = array_combine($headers, $data);
    ..

然后您可以使用 header 来引用数据,但 array_combine 要求两个数组的长度相同,因此如果缺少分隔符,可能会导致很多麻烦。

如果你的前两行是

 first,middle,last
 John,J,Doe

然后上面的代码(使用 array_combine)会给你

[
   'first' => John,
   'middle' => J,
   'last' => Doe
]

如果您使用 SpLFileObject 类,您可以执行 $obj->seek(1);

http://php.net/manual/en/class.splfileobject.php

我个人更喜欢第二个示例,使用 SplFileObject 类,但我讨厌过程代码...

关于php - 忽略导入 csv 时的第一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48295884/

相关文章:

php - PHP 和 MySQL 中的错误监控

php - file_get_contents 适用于本地但不适用于服务器

php - 有没有办法在扩展抽象类时为子类重新定义类型提示?

mysql - 微软 Access : Using Single form to enter query parameters in MS access

mysql查询以查找在两部电影中扮演的 Actor

mysql - 选择最受欢迎的商品

php - 聊天室在线用户列表实现

php - Dreamweaver PHP mySQL 插入到 WordPress wpdb 转换

c# - ForeignKeyConstraint 要求子键值 (0) 存在于父表中

php - 在一个查询中更新(或插入)多行