2017-07-03 14 views
-1

私のmysqlデータベースにCSVデータを送信しようとしていますが、ヘッダーが含まれているためデータの最初の行をスキップしたいと思っています。どうすれば私の下のコードでこれを実行できますか?CSVファイルデータの最初の行をスキップする

//if ($_FILES['csv']['size'] > 0) { 
if (!empty($_FILES['csv']['size']) && $_FILES['csv']['size'] > 0) { 
//get the csv file 
$file = $_FILES['csv']['tmp_name']; 
$handle = fopen($file,"r"); 

//loop through the csv file and insert into database 
$num = count($data); 
do { 
    if ($data[0]) { 
     mysql_query("INSERT INTO mbet_football (TIME, TEAMS, HOME, DRAW, AWAY) VALUES 
      ( 
       '".addslashes($data[0])."', 
       '".addslashes($data[1])."', 
       '".addslashes($data[2])."', 
       '".addslashes($data[3])."', 
       '".addslashes($data[4])."' 
      ) 
     "); 
    } 
} while ($data = fgetcsv($handle,1000,",","'")); 
// 

//redirect 
header('Location: mbetf.php?success=1'); die; 

} 

?> 

答えて

0

私は少しはあなたのコードを変更しましたが、それが動作するはずです:

<?php 

    //if ($_FILES['csv']['size'] > 0) { 
    if (!empty($_FILES['csv']['size']) && $_FILES['csv']['size'] > 0) { 
//get the csv file 
$file = $_FILES['csv']['tmp_name']; 

$row = 0; 

if (($handle = fopen($file, "r")) !== FALSE) { 
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { 

     $row++; 

     if($row == 1) continue; 

     if ($data[0]) { 
      mysql_query("INSERT INTO mbet_football (TIME, TEAMS, HOME, DRAW, AWAY) VALUES 
       ( 
        '".addslashes($data[0])."', 
        '".addslashes($data[1])."', 
        '".addslashes($data[2])."', 
        '".addslashes($data[3])."', 
        '".addslashes($data[4])."' 
       ) 
      "); 
     } 

    } 
     fclose($handle); 
    } 

//redirect 
header('Location: mbetf.php?success=1'); die; 

} 

?> 
+0

おかげで魅力的でした! – Ruckser

0

最初の行をスキップするにはブール型フラグを使用できます。

//loop through the csv file and insert into database 
$skipFlag = true; 
while($data = fgetcsv($handle,1000,",","'")){ 
    if($skipFlag){ 
     $skipFlag = false; 
     continue; 
    } 
    if ($data[0]) { 
     mysql_query("INSERT INTO mbet_football (TIME, TEAMS, HOME, DRAW, AWAY) VALUES 
      ( 
       '".addslashes($data[0])."', 
       '".addslashes($data[1])."', 
       '".addslashes($data[2])."', 
       '".addslashes($data[3])."', 
       '".addslashes($data[4])."' 
      ) 
     "); 
    } 
} 

追記:mysql_*機能を使用しないでください、彼らは、PHP 5.5で廃止されており、PHP 7.0で完全に削除されます。代わりにmysqliまたはpdoを使用してください。 And this is why you shouldn't use mysql_* functions

0

理由だけではなく、ループの前に最初の行を取得していませんか?

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

//loop through the csv file and insert into database 
while($data = fgetcsv($handle, 1000, ",", "'")) { 
    //code 
} 
関連する問題