2014-04-15 120 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