【问题标题】:How to write array values into a csv file in PHP?如何在 PHP 中将数组值写入 csv 文件?
【发布时间】:2010-11-27 08:11:18
【问题描述】:

我有一个数组,其结构类似于$data = array{0=>'abc',1=>xyz,2=>tqs}

现在我需要将这些值写入 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 实现这一点?

【问题讨论】:

    标签: php file fopen fwrite


    【解决方案1】:

    问题是你在 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);
    

    【讨论】:

      【解决方案2】:

      如果你使用 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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-05-10
        • 2016-01-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-08-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多