首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用数据库表头更新csv列名

问如何使用数据库表头更新csv列名
EN

Stack Overflow用户
提问于 2012-12-14 15:30:29
回答 2查看 1.3K关注 0票数 3

在过去的几天里,我遇到了这个问题,现在我很沮丧,因为我必须这么做。

我需要用数据库表头更新我的CSV文件列名。我的数据库表字段与CSV文件不同。现在的问题是,首先我想用数据库表头更新CSV文件的列名,然后用字段映射将其数据导入数据库。

请帮帮我,我不知道如何才能解决这个问题。

这是我的php代码:

代码语言:javascript
复制
$file      = $_POST['fileName'];
$filename  = "../files/" . $file;
$list      = $_POST['str'];
$array_imp = implode(',', $list);
$array_exp = explode(',', $array_imp);
$fp        = fopen("../files/" . $file, "w");
$num       = count($fp);

for ($c = 0; $c < $num; $c++) {
    if ($fp[c] !== '') {
        fputcsv($fp, $array_exp);
    }
}

fclose($fp);


require_once("../csv/DataSource.php");
$path = "../files/test_mysql.csv";
$dbtable = $ext[0];

$csv = new File_CSV_DataSource;
        $csv->load($path);
        $csvData = $csv->connect();
        $res=''; 
        foreach($csvData  as $key)
        {  print_r($key[1]);
            $myKey ='';
            $myVal='';
            foreach($key as $k=>$v)
            { 
                $myKey .=$k.',';
                $myVal .="'".$v."',";

            }
            $myKey = substr($myKey, 0, -1);
            $myVal = substr($myVal, 0, -1); 
            $query="insert into tablename($myKey)values($myVal)";
            $res=  mysql_query($query);
EN

回答 2

Stack Overflow用户

发布于 2012-12-15 01:01:28

您有一个现有的文件,其中的第一行需要替换。

下面概述了这一点:

一些小的解释(以及其他问题中没有涉及的一些技巧)。大多数情况下,在这里使用两个文件会更容易操作:

  1. 现有文件(要从中复制)
  2. 临时用于写入的新文件。

完成后,旧文件将被删除,新文件将重命名为旧文件的名称。

您的代码不起作用,因为您已经将新的第一行写入旧文件。这将在您关闭它时将文件的其余部分砍掉。

此外,你在一些基本的PHP特性上看起来也是误入歧途,例如,在文件句柄上使用count并不能帮助你获得行数。它将只返回1。

下面是你需要一步一步做的事情:

  1. 打开要从中读取的现有文件。只需读取它的第一行,前进的文件指针(fgets)
  2. Open一个新的文件写入。
  3. 将所有剩余数据从第一个文件复制到新的第二个文件中。PHP有一个这样的函数,它被称为stream_copy_to_stream.
  4. Close两个文件。

现在检查新文件是否就是您要查找的文件。当这一切正常工作时,您需要添加更多步骤:

  1. 将原始文件重命名为新名称。这可以通过将已写入的文件rename.
  2. Rename为原始文件名来完成。

如果你愿意,你可以删除你在5中重命名的文件。-但前提是你不再需要它。

就是这样。我希望这能对你有所帮助。PHP手册包含了所有提到并链接的函数的示例代码。祝好运。如果您不理解自己的代码,请先阅读手册。这减少了可以引入错误的地方。

票数 1
EN

Stack Overflow用户

发布于 2012-12-14 20:27:01

如果你正在设法插入表头,那么你就成功了一半。在我看来,您需要将数据附加到标题后面,如下所示:

$data = $headers;

if($fp[c]!=='')

代码语言:javascript
复制
 `{         $data .= fputcsv($fp, $array_exp);     }` 

请注意点'.‘在if语句中的等号'=‘之前。这将在标头后面添加无空的$fp[c]值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13874441

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档