【问题标题】:import csv data into database according to header根据表头将csv数据导入数据库
【发布时间】:2011-12-17 13:30:39
【问题描述】:

这是我的脚本。

     if (isset($_POST['submit'])) {
     if (is_uploaded_file($_FILES['filename']['tmp_name'])) {
        echo "<h1>" . "File ". $_FILES['filename']['name'] ." uploaded successfully." . "<br></h1>";
    echo "<h2>Displaying contents:</h2>";
    readfile($_FILES['filename']['tmp_name']);
    echo "<br>";
    echo $headers;
  }


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

     $header = fgetcsv($handle);

     while(! feof($handle)){

while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
    $import="INSERT into CSVtest($header[0],$header[1],$header[2],$header[3],$header[4]) 
                     values
                     ('$data[0]','$data[1]','$data[2]','$data[3]','$data[4]')";

    mysql_query($import) or die(mysql_error());
         }

    }

fclose($handle);

echo "Done";

   }

这就是我如何根据标题将数据插入数据库的方式,即使它与表格列的排列方式不同。 如果 csv 只有“单元格、名字、姓氏”(并且我的表也只有这 3 列),那么它仍然可以工作......但如果有“单元格、地址、公司、名字、姓氏”那么它将显示未知列错误。

实际上我希望有一个功能,即使 csv 中有很多列在表中不存在,它仍然可以选择正确的列并插入到表中。 谁能给我提示一下如何更改我的脚本?我知道有很多错误...显示我的低标准脚本真的很尴尬...

提前致谢。

【问题讨论】:

    标签: php mysql csv import header


    【解决方案1】:

    您可能希望使用 mysql_fetch_field 获取当前列,然后在构建查询时遍历每个标题以确保它存在于表中。

    http://php.net/manual/en/function.mysql-fetch-field.php

    【讨论】:

    • 非常感谢布莱克,你给了我一个非常有用的提示,现在我正在努力……希望我能做到。再次感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-26
    • 2011-08-09
    • 1970-01-01
    • 2016-12-30
    • 2013-05-02
    • 2017-01-11
    相关资源
    最近更新 更多