2011-10-31 113 views
1

我需要一個PHP腳本,它將更新現有的MySQL表格,從CSV獲取數據。表字段hasweb需要更新,比較字段consultant_id使用PHP從CSV更新MySql表格

因此MySQL查詢應該是

UPDATE user_data 
SET hasweb="something" 
WHERE consultant_id = "something"; 

請幫我寫一個PHP腳本,根據需要,可以執行這個查詢多次,這取決於CSV數據。

回答

4

我已經寫了小PHP腳本來實現這一點很多次,有很多種方法去了解它:

最好根據我的經驗是用PHP所提供的CSV功能,看看fgetcsv(),因爲手動打開文件並逐行閱讀並解析可能會導致併發症。

現在你只需通過CSV所有行中循環,動態準備查詢並執行它,例如(假設0列有ID和第1列有「hasweb」)

<?php 
    if (($handle = fopen("input.csv", "r")) !== FALSE) 
    { 
     while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) 
     { 
      mysql_query(UPDATE user_data SET hasweb="{$data[1]}" WHERE consultant_id = "{$data[0]}"); 
     } 
    fclose($handle); 
    } 
?> 

希望有所幫助。如果仍然卡住,請問我:)

+0

明白了@BlackDivine,非常感謝。 – IFightCode

+0

很高興幫助你,沒有問題:) – BlackDivine

+1

嘿@BlackDivine - 爲什麼你在那個fgetcsv函數中使用1000的長度?我試圖做同樣的事情,原來的海報想要做的,我很好奇。謝謝!! – Kale

1

您可以使用php函數fgetcsv。

您可以使用此功能從CSV文件中的所有數據到PHP。 例如,

$row = 1; 
if (($handle = fopen("your_file.csv", "r")) !== FALSE) { 
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { 
    $num = count($data); 
    echo "<p> $num fields in line $row: <br /></p>\n"; 
    $row++; 
    for ($c=0; $c < $num; $c++) { 
     $SQL = 'UPDATE table_name SET col1=val1 WHERE con1'; 
     execute($SQL); 
    } 
} 
fclose($handle); 
}