2011-10-31 112 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); 
}