1

csvファイルをアップロードするための簡単なスクリプトがあり、それは機能します。しかし、ヘッダーが指定されたデータを処理したい場合はどうすればよいですか?たとえば、テーブルにFirstName、LastName、Addressの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

あなたはスクリプトを持っていると言います:

あなたのスクリプトはこれを行うための 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 に答える