2014-04-15 173 views
0

我在通過PHP將我的CSV文件導入到MySQL服務器時遇到問題。 我已經搜索了答案,嘗試了各種代碼,並將它們添加到我的代碼中。 CSV文件只有一列包含500多行數據,這些數據是電子郵件。 我希望將它們導入到我的服務器中,並將它們導入列電子郵件中的表格電子郵件。 我不斷收到未定義的索引錯誤。無法使用PHP導入CSV到MySQL

<?php 
if (isset($_POST["Import"])) 
{ 
    $host = "localhost"; 
    $db_user = "root"; 
    $db_password = ""; 
    $db = "trabalho1"; 
    $conn = mysql_connect($host,$db_user,$db_password) or die (mysql_error()); 
    mysql_select_db($db) or die (mysql_error()); 
    echo $filename=$_FILES["file"]["tmp_name"]; 

    if ($_FILES["file"]["size"] > 0) 
    { 
     $file = fopen($filename, "r"); 
     while (($emapData = fgetcsv($file, 10000, ",")) !== FALSE) 
     { 
      print_r($emapData); 
      $sql = "INSERT into email(email) values('$emapData[0]')"; 
      mysql_query($sql); 
     } 
     fclose($file); 
     echo "CSV File has been successfully Imported"; 
     header("Location:../listar/listaremail.php"); 
    } 
    else 
     echo "Invalid File:Please Upload CSV File"; 
} 
?> 

我的表格來自於一個html頁面,它就是這種格式。

<form id="formulario1" name="post" enctype="multipart/form-data" method="post" onsubmit="return validar(this);" action="../inserir/inseriremailexcel.php"> 
      <fieldset> 
       <legend>A partir do Excel</legend> 
       <label>Email:</label> 
       <input type="file" name="file" id="file" size="150"> <br>        
      </fieldset> 
      <br> 
      <fieldset>   
       <button type="submit" name="Import" value="Import">Upload</button> 
      </fieldset></h1> 
      Atenção. A data e hora actual serão gravadas com o seu registo. 
    </form> 

有關該問題的任何提示?我訪問過各種網頁,並嘗試了很多修補程序,但沒有一個能夠正常工作。

完整的錯誤是如下 說明:未定義指數:在C文件:\ XAMPP \ phpMyAdmin的\ trabalho \ inserir \ inseriremailexcel.php第12行

說明:未定義指數:文件在C:\ XAMPP \第13行上的phpMyAdmin \ trabalho \ inserir \ inseriremailexcel.php 無效的文件:請上傳CSV文件

+0

請填寫完整的錯誤嗎? – eXplicit

+0

它可能是'[「tmp_name」]'位導致問題? – Chrisky

+0

@Chrisky,我試着刪除它。它給出了同樣的錯誤。我原本並沒有使用它,但是我看到的大部分代碼都包含了它,並且我得出結論,認爲在稍後的時間裏有必要爲了在它之前擁有一些東西。不知道如果我解釋自己正確 – Heatmanofurioso

回答

0

將enctype =「multipart/form-data」添加到您的表單中。

<form id="formulario1" name="post" method="post" enctype="multipart/form-data" onsubmit="return validar(this);" action="../inserir/inseriremailexcel.php">...</form> 
+0

現在它給了我C:\ xampp \ tmp \ php7705.tmpArray([0] => [email protected] ;;;;;;;;;;;;;;)Array([0] => [email protected] ;;;;;;;;;;;;;)重複所有包含的電子郵件。並在最後一行說警告:無法修改頭信息 - 在C:\ xampp \ phpMyAdmin \ trabalho \ inserir中已經發送的頭文件(輸出開始於C:\ xampp \ phpMyAdmin \ trabalho \ inserir \ inseriremailexcel.php:19) \ inseriremailexcel.php 25行。 但至少它現在發送數據到數據庫 – Heatmanofurioso

+0

它給你錯誤「...頭已發送...」,因爲你有「回聲」語句之前的「標題(」Localtion :「)」 –

0

首先,您需要在「form」標記中使用enctype =「multipart/form-data」來上傳文件。

+0

現在,它給了我 C:\ XAMPP \ tmp目錄\ php7705.tmpArray([0] => [email protected] ;;;;;;;;;; ;;; Array)([0] => [email protected] ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 對包含的所有電子郵件都重複。 並在最後一行說明 警告:無法修改頭文件信息 - C:\ xampp \ phpMyAdmin \ trabalho已經發送的頭文件(輸出在C:\ xampp \ phpMyAdmin \ trabalho \ inserir \ inseriremailexcel.php:19開始) \ inserir \ inseriremailexcel.php 25行 – Heatmanofurioso

+0

但是,數據已傳遞到數據庫並創建了幾行,但它們都是空的 – Heatmanofurioso