如何将数据从文本文件导入MYSQL数据库表?

时间:2015-12-11 07:07:02

标签: php mysql import

我正在尝试将数据从文本文件导入到我的mysql数据库表中。一些如何导入数据,但它不是正确的数据。我也得到这个错误:

未定义的偏移量:第36行的C:\ wamp \ www \ Upload \ main.php中的6 请查看我的代码。

以下是我的代码:

<?php
    $con=mysqli_connect("localhost","root","","hiren");
    // Check connection
    if (mysqli_connect_errno())
      {
      echo "Failed to connect to MySQL: " . mysqli_connect_error();
      }


    $f = fopen("./uploads/imp.txt", "r");
    while(!feof($f)) { 
      $data = explode(" ", fgets($f));

      $id =$data[0];
       $emp_id = $data[1];
       $date = $data[2];
       $abc = $data[3];
       $def = $data[4];
       $entry = $data[5];
       $ghi = $data[6];

       mysqli_query($con,"INSERT INTO `daily_data2` (emp_id, date, abc, def, entry, ghi) 
    VALUES ('$emp_id', '$date', '$abc', '$def', '$entry', '$ghi')") or die(mysql_error());

        }

        fclose($f);

        ?>

我的表:

mytable

Imp.txt文件:

text file

以错误的方式插入数据:uploaded data]

我得到的错误: error

4 个答案:

答案 0 :(得分:1)

错误显示,对于某些行,第6个索引中没有可用的数据,您应该像下面的代码一样传递空字符串。 注意:希望每行使用&#34; &#34;您试图爆炸但这不是一个好习惯,因为如果任何数据包含也被视为新行的空间。 像这样更新您的代码:

   $data = explode(" ", fgets($f));

   $id = !empty($data[0]) ? $data[0] : '';
   $emp_id = !empty($data[1]) ?$data[1] : '';
   $date = !empty($data[2]) ? $data[2] : '';
   $abc = !empty($data[3]) ? $data[3] : '';
   $def = !empty($data[4]) ? $data[4] : '';
   $entry = !empty($data[5]) ? $data[5] : '';
   $ghi = !empty($data[6]) ? $data[6] : '';

答案 1 :(得分:1)

你必须索引的字段多于他们得到的字段

您索引7个字段,但只有6个字段

 $data = explode(" ", fgets($f));   // this give you 6 value but you index 7

 $id =$data[0];
   $emp_id = $data[1];
   $date = $data[2];
   $abc = $data[3];
   $def = $data[4];
   $entry = $data[5];
   $ghi = $data[6];

   mysqli_query($con,"INSERT INTO `daily_data2` (emp_id, date, abc, def, entry, ghi) 
VALUES ('$emp_id', '$date', '$abc', '$def', '$entry', '$ghi')") or die(mysql_error());

答案 2 :(得分:1)

string fgets(resource $ handle [,int $ length])

读取长度 - 读取1个字节,或换行(包含在返回值中)或EOF(以先到者为准)时结束。如果没有指定长度,它将继续从流中读取,直到它到达行尾。

所以使用:

$data = explode(" ", trim(fgets($f,4096)));

也用 ini_set("auto_detect_line_endings", true); 在fopen之前

答案 3 :(得分:1)

好吧我想这会解决你的问题

class MyCustomClass 
{
    private $tool;

    public function __construct(MyCustomInterface $tool)
    {
        $this->tool = $tool;
    }
}