Я хочу игнорировать первую строку в файле импорта 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());
}
Перед циклом while вы можете использовать функцию fgetcsv.
$firstLine = fgetcsv($handle, 1000, ",");
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
...
Как это
$row = -1;
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
++$row;
if($row == 0 ) continue;
...
Мы начинаем с -1
таким образом, чтобы мы могли увеличивать количество строк перед чем-либо.
Другой способ - создать массив заголовков:
$headers = fgetcsv($handle, 1000, ",");
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$row = array_combine($headers, $data);
..
Затем вы используете заголовки для ссылки на данные, но array_combine
требует, чтобы оба массива были одинаковой длины, поэтому, если у вас отсутствуют разделители, это может вызвать массу проблем.
Итак, если ваши первые 2 строки
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, но я ненавижу процедурный код...