Как записать значения массива в файл csv в PHP?

У меня есть массив, структура которого похожа на $data = array{0=>'abc',1=>xyz,2=>tqs}

Теперь мне нужно записать эти значения в файл csv. Мне нужно отображать каждое значение в 1-м столбце и каждый раз с новой строкой в ​​новой вставке вместе с уже доступным предыдущим значением.

Ниже приведен код, который я использую, но каждый раз, когда я его выполняю, я получаю последнее значение в файле:

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?


person OM The Eternity    schedule 27.11.2010    source источник


Ответы (2)


Проблема в том, что вы выполняете fopen внутри цикла for, поэтому каждый раз, когда цикл запускается, ваш файл перезаписывается. Переместите fopen и fclose за пределы цикла, и это сработает. Как это;

$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);
person shamittomar    schedule 27.11.2010

Если вы используете 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

person joksnet    schedule 27.11.2010