2015-04-06 5 views
0

Я импортирую файл csv в свою базу данных (Mysql) с помощью php. Этот код ниже вставляет только первую строку (данные в файл csv) в базу данных. Но предполагается, что в базу данных будет добавлено больше строки.Импорт csv-файла в mysql через php

$info = pathinfo($_FILES['file']['name']); 

/** 
* This checks if the file is a csv file 
*/ 
if(strtolower($info['extension']) == 'csv'){ 
    $filename=$_FILES["file"]["tmp_name"]; 

    if($_FILES["file"]["size"] > 0){ 

     //Open the file 
     $file = fopen($filename, "r"); 

     while (($emapData = fgetcsv($file, 10000, ",")) !== FALSE){ 
      $num = count($emapData); 

      /** 
      * Insert data into the database if the columns are 
      * exactly in three columns 
      */ 
      if ($num == 3){ 
       $sql = "INSERT 
         INTO Users (firstName,surName,indexNo) 
        VALUES('$emapData[0]','$emapData[1]','$emapData[2]')"; 

       $result=$db->query($sql); 


       if($result){ 
        echo "<script type=\"text/javascript\"> 
          alert(\"CSV File has been successfully Imported.\"); 
          window.location = \"../administrator/bulkStudentReg.php\" 
         </script>"; 
       } 
       else{ 
        echo "<script type=\"text/javascript\"> 
        alert(\"Please Upload CSV File was not successful.\"); 
        window.location = \"../administrator/bulkStudentReg.php\" 
        </script>"; 
       } 
      } 
      else{ 
       echo "<script type=\"text/javascript\"> 
        alert(\"UPLOAD FAILED: Please your csv file contains incomplete column/s. Column should be 3 columns\"); 
        window.location = \"../administrator/bulkStudentReg.php\" 
        </script>"; 
      } 
     fclose($file); 
     } 
    } 
} 
else{ 
    echo "<script type=\"text/javascript\"> 
        alert(\"UPLOAD FAILED: Please the file should be in a csv file, eg. students.csv \"); 
        window.location = \"../administrator/bulkStudentReg.php\" 
        </script>"; 
} 
+0

Что такое '$ emapData'? Какие данные в нем? –

ответ

3

Вы ищете что-то подобное.

Я не тестировал, так как у меня нет выборочных данных от вас, но, пожалуйста, отпустите его.

<?php 
$info = pathinfo($_FILES['file']['name']); 

/** 
* This checks if the file is a csv file 
*/ 
if(strtolower($info['extension']) == 'csv'){ 
    $filename=$_FILES["file"]["tmp_name"]; 

    if($_FILES["file"]["size"] > 0){ 

     //Open the file 
     $file = fopen($filename, "r"); 

     while (($emapData = fgetcsv($file, 10000, ",")) !== FALSE){ 
      $num = count($emapData); 

      /** 
      * Insert data into the database if the columns are 
      * exactly in three columns 
      */ 
      if ($num == 3){ 
       $sql = "INSERT 
         INTO Users (firstName,surName,indexNo) 
        VALUES('$emapData[0]','$emapData[1]','$emapData[2]')"; 

       $result=$db->query($sql); 
      } 
     } 
     if($result){ 
        echo "<script type=\"text/javascript\"> 
          alert(\"CSV File has been successfully Imported.\"); 
          window.location = \"../administrator/bulkStudentReg.php\" 
         </script>"; 
       }else{ 
        echo "<script type=\"text/javascript\"> 
        alert(\"Please Upload CSV File was not successful.\"); 
        window.location = \"../administrator/bulkStudentReg.php\" 
        </script>"; 
       } 
    } 
    fclose($file); 
} 
else{ 
    echo "<script type=\"text/javascript\"> 
        alert(\"UPLOAD FAILED: Please the file should be in a csv file, eg. students.csv \"); 
        window.location = \"../administrator/bulkStudentReg.php\" 
        </script>"; 
} 
?> 
+0

Да, это хорошо работает .. Но, пожалуйста, каково максимальное число, которое я могу загрузить по запросу. Спасибо – George

+0

Это зависит от ваших потребностей. По-видимому, нет максимальных чисел, которые необходимо загружать по запросу. Это будет хорошо работать для вашего дела. –

4

Вы могли бы попытаться использовать встроенную функцию MySQL для вставки данных в формате CSV, если структура ваших данных равна вашей структуре таблицы это довольно просто:

$sql = "LOAD DATA INFILE '$filename' INTO TABLE Users 
FIELDS TERMINATED BY ','" 

проверка MySQL LOAD DATA Documentation больше Детальная информация

Смежные вопросы