2011-10-28 11 views
4

ここに私のスクリプトです。ヘッダに基づいてCSVデータをデータベースにインポートします

 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に "cell、firstname、lastname ,,"(そして私のテーブルにはこれらの3つのカラムだけがあります)という文字列しかない場合はまだ動作していますが、 "cell、address、company、firstname、lastname"それは私に未知の列エラーを表示します。

実際には、テーブルに存在しないcsvに多数の列があっても、それでも正しい列を選択してテーブルに挿入できるという機能を望みます。 誰でも私のスクリプトを変更する方法のヒントを教えてもらえますか?私は多くのエラーがあることを知っています...私の低レベルのスクリプトを表示することは本当に恥ずかしいです...

ありがとうございます。

答えて

3

mysql_fetch_fieldを使用して現在の列を取得し、それぞれのヘッダーをループしてクエリを構築する際にテーブルに存在することを確認します。

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

+0

あなたは私に非常に便利なヒントを与え、今私はうまくいけば、私は再びit.Thanksを作ることができます...それに取り組んでいます、そんなにブレイクありがとうございます。 –

+0

いいえprobs ...喜び:) –

関連する問題