2010-11-27 40 views
0

J'ai un tableau dont la structure est similaire à $data = array{0=>'abc',1=>xyz,2=>tqs}Comment écrire des valeurs de tableau dans un fichier csv en PHP?

Maintenant j'ai besoin d'écrire ces valeurs dans un fichier csv. J'ai besoin d'afficher chaque valeur dans la 1ère colonne et avec chaque nouvelle ligne sur la nouvelle insertion avec la valeur précédente déjà disponible.

est Ci-dessous le code que je me sers, mais chaque fois que je reçois, j'execute la dernière valeur dans le fichier:

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); 


    } 

Comment puis-je parvenir en utilisant PHP?

Répondre

5

Le problème est que vous faites fopen à l'intérieur de la boucle for, donc à chaque fois que la boucle s'exécute, votre fichier est réécrit. Déplacez le fopen et fclose en dehors de la boucle et cela fonctionnera. Comme ça;

$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

Si vous utilisez MySQL, vous pouvez utiliser 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