2017-03-13 5 views
0

助けが必要です。 複数のレコード/行を含むCSVファイルをアップロードしていて、phpとmysqlを使用してデータベースに挿入したいとします。 csvをご覧ください。 enter image description hereアップロードされたCSVファイルの複数のレコードは、1つの配列のみを返します

ご覧のとおり、テーブルにフェッチして挿入したいレコードが3つあります。

ただし、このファイルを作成すると、1つの配列しか返されません。 これはリターンです:

["1","1","1234","12\/1\/2017\r2","2","5678","12\/25\/2018\r3","3","13323","1\/1\/2020"] 

誰も私を助けることができますか? ここに私のコードです:

if(isset($_POST["Import"])){ 

     $filename=$_FILES["file"]["tmp_name"];  


     if($_FILES["file"]["size"] > 0) 
      { 
      $file = fopen($filename, "r"); 
      while (($getData = fgetcsv($file, 10000, ",")) !== FALSE) 
      { 

        $sql = "INSERT INTO cardtbl (cardid,cardno,cardpin,expdate,datecreated) 
        VALUES  ('".$getData[0]."','".$getData[1]."','".$getData[2]."','".$getData[3]."','".$today."')"; 
        // $result = mysql_query($sql); 

       if(!isset($result)) 
       { 
        echo "<script type=\"text/javascript\"> 
          alert(\"Invalid File:Please Upload CSV File.\"); 
          <!--window.location = \"cardlist.php\"--> 
          </script>";  
       } 
       else { 
         echo "<script type=\"text/javascript\"> 
         alert(\"CSV File has been successfully Imported.\"); 
         window.location = \"cardlist.php\" 
        </script>"; 
       } 
      }//end 

      fclose($file); 
     } 
    } 

ありがとう!

答えて

0
LOAD DATA INFILE "csv_file_path" 
INTO TABLE table_name 
COLUMNS TERMINATED BY ',' 
OPTIONALLY ENCLOSED BY '"' 
ESCAPED BY '"' 
LINES TERMINATED BY '\n' 
IGNORE 1 LINES; 

上記のSQLクエリを使用して、データに対する操作を実行したくない場合は、テーブルに挿入できます。ファイルにヘッダーがない場合は、クエリから "IGNORE 1 LINES"文字列を取り出すことができます。これはあなたの問題を解決します。

0

PHPが正常に終了ラインを検出することができないが、それは\nを期待しているとして、それが表示され、(R 2 \ 2017年12月1日から分かるように)CSVファイルには、\rファイル終末を持っています。

PHPのドキュメントhttps://secure.php.net/manual/en/function.fgetcsv.phpによると、私はそれを含め

+0

ファイルの先頭にini_set("auto_detect_line_endings", true);を使用してauto_detect_line_endingsを有効にする必要がありますが、それは追加の空白のレコードを返します:[「1」、「1」、「1234」を、 「12」、「3」、「13323」、「1 \/2」、「1」、「2」、「2」、「5678」、「12 \/1 \/2017」、 1 \/2020 "] [null] –

+0

大きな単一の配列ではなく、複数の配列になっているので、正確な出力は何ですか?最後の '[null]'の追加配列は、おそらくファイルの最後に追加行があるためです –

関連する問題