2011-10-28 73 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 ...高興:) –