2013-01-17 9 views
9

ich eine CSV-Datei haben, und ich lesen Daten aus CSV-Datei dann möchte ich erste Zeile der CSV überspringen file.Which'll jeden Header enthalten. Ich benutze diesen Code.erste Zeile fgetcsv Methode in PHP überspringen

while (($emapData = fgetcsv($file, 10000, ",")) !== FALSE) 
    { 
    $sql = "INSERT into da1(contact_first, contact_last, contact_email) values('$emapData[0]','$emapData[1]','$emapData[2]')"; 
     mysql_query($sql); 

    } 

Wenn ich Daten in die Datenbank einfüge, sollte der Header nicht in der Datenbank gespeichert werden.

+6

[** Bitte verwenden Sie nicht 'mysql_ *' Funktionen in neuem Code **] sein (http://bit.ly/phpmsql). Sie werden nicht mehr gepflegt [und sind offiziell veraltet] (https://wiki.php.net/rfc/mysql_deprecation). Siehe die [** rote Box **] (http://j.mp/Te9zIL)? Erfahren Sie mehr über [* vorbereitete Anweisungen *] (http://j.mp/T9hLWi) statt, und verwenden Sie [PDO] (http://php.net/pdo) oder [MySQLi] (http://php.net/ mysqli) - [dieser Artikel] (http://j.mp/QEx8IB) wird Ihnen helfen zu entscheiden, welche. Wenn Sie PDO wählen, [hier ist ein gutes Tutorial] (http://stackoverflow.com/a/14110189/1723893). –

Antwort

28

Versuch:

$flag = true; 
while (($emapData = fgetcsv($file, 10000, ",")) !== FALSE) { 
    if($flag) { $flag = false; continue; } 
    // rest of your code 
} 
+0

Dank wurde es erfolgreich getan .... –

+0

Sie sind willkommen .. :) –

+0

btw, können Sie es als akzeptiert markieren könnte, wenn es Ihr Problem gelöst .. :) –

6

Sie können eine einfache Überprüfung hinzufügen und die Abfrage überspringen, wenn die Überprüfung fehlschlägt:

$firstline = true; 
while (($emapData = fgetcsv($file, 10000, ",")) !== FALSE) 
{ 
if (!$firstline) { 
    $sql = "INSERT into da1(contact_first, contact_last, contact_email) values('$emapData[0]','$emapData[1]','$emapData[2]')"; 
     mysql_query($sql); 
    } 
    $firstline = false; 
} 
30

Bevor die while-Schleife beginnen, nur um die erste Zeile und nichts tun mit es. Auf diese Weise wird die Logik zum Testen, ob es die erste Zeile ist, nicht benötigt.

fgetcsv($file, 10000, ","); 
while (($emapData = fgetcsv($file, 10000, ",")) !== FALSE) { 
    //.... 
} 
+2

Dies ist die Art von Antwort, die Sie denken lassen: "Warum ich nicht vorher in dieser Lösung dachte". Einfach und effektiv. Und wenn Sie x Zeilen überspringen wollen, fügen Sie einfach eine For-Klausel hinzu und das war's! –

+0

Ich würde sagen, dass dies eine bessere Antwort als die Flag-basierten Lösungen, keine Notwendigkeit, Logik hinzufügen, um die Innenseite der while-Schleife – alex9311

+2

Diese Antwort sollte als die besten ausgewählt wurde. Die einfachste Lösung ist immer die beste. Plus, das ist etwas besser als der Rest in Bezug auf die Leistung –

1

Versuchen Sie diesen einfachen Code.

$file = fopen('example.csv', 'r'); // Here example is a CSV name 
$row = 1; 
while (($line = fgetcsv($file, 10000, ",")) !== FALSE) { 
// $line is an array of the csv elements 
if($row == 1){ $row++; continue; } // continue is used for skip row 1 
// print_r($line); 
// rest of your code 
} 

Hoffnung seine work..Cheers ..

0

Ein bisschen spät, aber hier ist eine andere Art und Weise, dies zu tun (ohne alle Linien zählen mit): mit fgets

$file = fopen($filename, 'r'); // create handler 
fgets($file); // read one line for nothing (skip header) 
while (($line = fgetcsv($file, 10000, ",")) !== FALSE) { 
    // do your thing 
} 

man könnte dies berücksichtigen elegantere

Verwandte Themen