我过去几天都面临这个问题而现在感到沮丧,因为我必须这样做。
我需要使用数据库表头更新我的CSV文件列名。我的数据库表字段与CSV文件不同。现在的问题是,首先我想用数据库表头更新CSV文件的列名,然后用字段映射将其数据导入数据库。
请帮助我,我不知道如何解决这个问题。
这是我的PHP代码:
$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);
答案 0 :(得分:1)
您有一个现有文件,其中第一行需要更换。
这一概述如下:
一些小解释(以及其他问题未涉及的一些提示)。大多数情况下,使用两个文件操作更容易:
完成后,旧文件将被删除,新文件将被重命名为旧文件的名称。
您的代码无效,因为您已将新的第一行写入旧文件。当你关闭它时,这将切掉文件的其余部分。
你也看起来误导了一些基本的PHP功能,例如:在文件句柄上使用count
无法帮助您获取行数。它只会返回1.
以下是您需要做的一步一步:
fgets
)stream_copy_to_stream
。关闭这两个文件。
现在检查新文件是否是您要查找的内容。当这一切都有效时,您需要添加更多步骤:
将原始文件重命名为新名称。这可以通过rename
完成。
如果需要,您可以删除在5中重命名的文件。 - 但仅限于您不再需要它。
就是这样。我希望这是有帮助的。 PHP手册包含所提及和链接的所有功能的示例代码。祝好运。如果您不了解自己的代码,请先使用手册阅读相关内容。这减少了可能引入错误的地方。
答案 1 :(得分:0)
如果您要设置插入表格标题,那么您就在那里。 听起来像你需要在标题之后追加数据:
$data = $headers;
if($fp[c]!=='')
{
$data .= fputcsv($fp, $array_exp);
}
注意点'。'在if语句中等于'='之前。这将在标题后添加空白$fp[c]
值。