2010-11-27 123 views
0

我有一个阵列,其结构如下$data = array{0=>'abc',1=>xyz,2=>tqs}如何在PHP中将数组值写入csv文件?

现在我需要将这些值写入csv文件。我需要显示第一列中的每个值以及每次新插入时的新行以及之前的值。

下面是我使用的代码,但每次我执行它,我在文件中得到的最后一个值:

for ($c=0; $c < $num; $c++) { 
     echo $data[$c]; 
    echo $query = "select prod_sku,prod_name 
    from 
     tbl_product 
    where 
    prod_sku = '".$data[$c]."'"; 
    $result = mysql_query($query); 
    $row = mysql_fetch_array($result); 
    if(empty($row)){ 
    print_r($row); 
    echo 'test'; 
    $fp = fopen("file.csv", "w"); 
    print_r($data[0]); 

     fputcsv($fp, $data[0]); 
     fclose($fp); 


    } 

我怎么能做到这一点使用PHP?

回答

5

问题是你在for循环中做fopen,所以每次循环运行时,你的文件都会被重写。将fopenfclose移到循环外部,它将起作用。喜欢这个;

$fp = fopen("file.csv", "w"); 
for ($c=0; $c < $num; $c++) 
{ 
    $query = "select prod_sku,prod_name from tbl_product where prod_sku = '".$data[$c]."'"; 
    $result = mysql_query($query); 
    $row = mysql_fetch_array($result); 

    fputcsv($fp, $data); 
} 
fclose($fp); 
0

如果你使用MySQL,你可以使用SELECT ... INTO OUTFILE

SELECT prod_sku, prod_name 
INTO OUTFILE '/tmp/products.csv' 
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' 
ESCAPED BY '\\' 
LINES TERMINATED BY '\n' 
FROM tbl_product 
WHERE 1 

http://dev.mysql.com/doc/refman/5.0/en/select.html