Пропустить первую строку загрузки CSV в MySQL с использованием PHP - PullRequest
0 голосов
/ 03 ноября 2018

Я хочу пропустить первую строку CSV (часть заголовка) при загрузке его в MySQL с использованием PHP, но он всегда вставляет первую строку в таблицу MySQL, а также не загружает итоговые записи в MySQL. У меня есть 1000 записей в моем CSV, но он загружает только 174 записи одновременно. Я использую приведенный ниже код для загрузки CSV в MySQL. Кто-нибудь знает, что я делаю не так.

    <?php

include 'config.php';
$flag = true;
 if(isset($_POST["import"])){

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


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

 if($flag)
  {
   $flag = false;
    continue;
     }
               $sql = "INSERT into tbl_customer(customer_name,customer_excise_code,city) 
                   values ('".$getData[0]."','".$getData[1]."','".$getData[2]."')";

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

             fclose($file); 
         }
    }    


 ?>

1 Ответ

0 голосов
/ 03 ноября 2018

Вы можете попробовать следующие предложения:

  • проверять наличие пустых строк в вашем файле до if($flag) {...}
  • ваша проверка с помощью isset() всегда будет возвращать true, потому что mysqli_query () возвращает логическое значение или объект, поэтому вы не знаете, правильно ли выполнен оператор. Вы выполняете оператор INSERT, и в этом случае ожидаемый результат от mysqli_query() будет логическим, поэтому просто проверьте $result.

PHP:

<?php
$flag = true;
...

while (($getData = fgetcsv($file, 10000, ",")) !== FALSE) {
    if (is_null($getData[0])) {
        continue;
    }
    if ($flag) {
        $flag = false;
        continue;
    }
    ...

    $result = mysqli_query($conn, $sql);
    if (!$result) {
        ...
    } else {
        ...
    }   

    ...
}

...
?>
...