1

我有一个简单的脚本来上传 csv 文件,它可以工作。但是如果我想处理带有指定标题的数据呢?例如,如果我的表有 3 列:名字、姓氏、地址,现在我的 csv 文件是:

Address,FirstName,LastName
myadd,myfname,mylname

即使与表列名的排列方式不同,如何根据标题将数据正确插入mysql?

如果我使用我的脚本,它只会将 myadd,myfname 和 mylname 插入 FirstName,LastName 和 Address ,甚至标题也会被插入。

if (isset($_POST['upload'])) {

if (is_uploaded_file($_FILES['filename']['tmp_name'])) {
    echo "<h1>" . "File ". $_FILES['filename']['name'] ." uploaded successfully." . "</h1>";
    echo "<p>contents:</p>";
    readfile($_FILES['filename']['tmp_name']);
}


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

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

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

fclose($handle);

Echo "Done";

}

4

1 回答 1

1

你说你有脚本:“如果我使用我的脚本,它只会将 myadd,myfname 和 mylname 插入 FirstName,LastName 和 Address ,甚至标题也会被插入。”

我假设您的脚本正在生成 SQL 来执行此操作,即您说的是 INSERT INTO tablename VALUES(v1,v2,v3);

而不是那样做,做一个命名的插入 INSERT INTO user (f1,f2,f3) VALUES('v1','v2','v3');

换句话说,在生成 sql 的脚本中指定字段名称。

于 2011-10-26T21:35:35.270 回答