2010-11-27 117 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