2013-10-04 67 views
0

我有这个页面,用户上传一个CSV然后使用PHP,现有的mysql表格被截断,CSV中的值被添加到表格中。带额外分隔符的fgetcsv行用双引号括起来

直到现在我使用phpMyAdmin低谷导入CSV方法,但我想为用户提供一个页面,以便他可以自己上传文件。

的CSV的结构是这样的行这个

code, name, price 
102, plane toy, 23.7 

99%是相同的,除了一些人从至极,他导出CSV店用双引号由软件。 像这样:

223, "Mary's white, tshirt", 23.9 

这是我的导入失败,到达“”中“的白T恤”。

我在这里找到了一个抛弃字符的方法,但是它的模式是相同的,我的更改,我不知道额外的“,”会在哪里,但我确实有这些项目在双引号“item”中包含多余的“,”。

如何修改我的代码以解决此问题?

这里是我的代码:

<?php 
    if(isset($_POST['submit'])) 
    { 
     $fname = $_FILES['sel_file']['name']; 

     $chk_ext = explode(".",$fname); 

     if(strtolower($chk_ext[1]) == "csv") 
     { 

      $filename = $_FILES['sel_file']['tmp_name']; 
      $handle = fopen($filename, "r"); 

      $con = mysqli_connect('localhost','xxxx','zzzz','zzz'); 
       if (!$con) 
       { 
       die('Could not connect: ' . mysqli_error($con)); 
       } 

      mysqli_select_db($con,"TABLE 1"); 
      $sqltruncate = "TRUNCATE TABLE `TABLE 1`"; 
      mysqli_query($con,$sqltruncate) or die(mysqli_error($con)); 


      while (($data = fgetcsv($handle, 1000, ',')) !== FALSE) 
      { 
       $sql = "INSERT into `TABLE 1`(code,name,price) values('$data[0]','$data[1]','$data[24]')"; 
       mysqli_query($con,$sql) or die(mysqli_error($con)); 
      } 

      fclose($handle); 
      echo "Success"; 
     } 
     else 
     { 
      echo "Invalid file"; 
     } 
    } 
    ?> 


    <form action='<?php echo $_SERVER["PHP_SELF"];?>' method='post' enctype='multipart/form-data'> 

     Choose CSV : <input type='file' name='sel_file' id='sel_file'> 
     <input type='submit' name='submit' value='submit'> 

    </form> 

回答

0

使用foreach的,而内,然后使用TRIM(),从值删除引号。

相关问题