2016-02-28 71 views
0

我創建了下面的php代碼來將.csv文件導入運行在phpmyadmin上的mysql數據庫中。代碼如下:使用php導入csv文件到數據庫

<?php 
ini_set('display_errors', 1); 
error_reporting(E_ALL); 
$db_host = 'localhost'; 
$db_user = 'root'; 
$db_pwd = ''; 

$database = 'mydatabase'; 
$table = 'demo'; 

if ([email protected]_connect($db_host, $db_user, $db_pwd)) 
    die("Can't connect to database"); 

if (!mysql_select_db($database)) 
    die("Can't select database"); 


    if(isset($_POST['submit'])) 
    { 
     $fname = $_FILES['sel_file']['name']; 
     echo 'upload file name: '.$fname.' '; 
     $chk_ext = explode(".",$fname); 

     if(strtolower(end($chk_ext)) == "csv") 
     { 

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

      while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) 
      { 
       $sql = "INSERT into demo(orders,quantity,country,dates,comment) values('$data[0]','$data[1]','$data[2]', '$data[3]','$data[4]')"; 
       mysql_query($sql) or die(mysql_error()); 
      } 

      fclose($handle); 
      echo "Successfully Imported"; 

     } 
     else 
     { 
      echo "Invalid File"; 
     } 
    } 

    ?> 
    <h1>Import CSV file</h1> 
    <form action='<?php echo $_SERVER["PHP_SELF"];?>' method='post' enctype="multipart/form-data"> 
     Import File : <input type='file' name='sel_file' size='20'> 
     <input type='submit' name='submit' value='submit'> 
    </form> 

一旦我提交.csv文件,顯示「成功導入」但是當我只檢查.csv文件的第一行導入到數據庫的數據庫信息。其他記錄不是。

+0

不要使用'mysql_ *'它已被刪除,它將不再起作用,使用'PDO' [鏈接](http://php.net/manual/en/book.pdo.php)或者'mysqli' [link](http://php.net/manual/en/book.mysqli.php)。 – Tom

+0

另外,看看加載數據infile。這是更快的方式導入csv – baao

+0

所以我應該更換mysql,與代碼中的mysqli? – compcrk

回答

0

不要使用mysql_將其更改爲PDO或mysqli。這就是說我已經改變了你的代碼來爆炸每一行,然後將這些值分配給一個列表。它爲我工作。

if(isset($_POST['submit'])) 
{ 
    $fname = $_FILES['sel_file']['name']; 
    echo 'upload file name: '.$fname.' '; 

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

    if(strtolower(end($chk_ext)) == "csv") 
    { 
     foreach (file($fname) as $row) 
     { 
      list($data0, $data1, $data2, $data3, $data4) = explode(",", $row); 
      $sql = "INSERT into demo(orders,quantity,country,dates,comment) values('$data0','$data1','$data2', '$data3','$data4')"; 
      mysql_query($sql) or die(mysql_error()); 
     } 

     echo "Successfully Imported"; 
    } 
    else 
    { 
     echo "Invalid File"; 
    } 
}