игнорировать первую строку при импорте CSV

0

Я хочу игнорировать первую строку в файле импорта 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());
}
  • 0
    Вы пытались продолжить ...
  • 0
    просто добавьте счетчик, начинающийся с 0, перед циклом while и установите счетчик приращений, а затем установите условие, если counter == 1, затем продолжите
Теги:

2 ответа

0

Перед циклом while вы можете использовать функцию fgetcsv.

$firstLine = fgetcsv($handle, 1000, ",");
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
...
  • 0
    Хотя это может быть ценным советом для решения проблемы, хороший ответ также демонстрирует решение. Пожалуйста, измените, чтобы предоставить пример кода, чтобы показать, что вы имеете в виду. В качестве альтернативы, попробуйте написать это как комментарий.
0

Как это

$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, но я ненавижу процедурный код...

Ещё вопросы

Сообщество Overcoder
Наверх
Меню