在PHP中将标题添加到CSV导出

时间:2017-06-19 21:04:37

标签: php csv

我尝试在运行一些查询后将数据导出为PHP格式的CSV。到目前为止,我能够成功地使用:

   $temp = mysqli_query($link, $sql);
   $fp = fopen("results.csv", "w");

   while($row = mysqli_fetch_array($temp, MYSQLI_ASSOC)){
   fputcsv($fp, $row);
   }

   fclose($fp);

但是,我不了解如何保留我的SQL查询形成的标头。

3 个答案:

答案 0 :(得分:0)

基础知识是,只需手动插入第一行作为标题

   $temp = mysqli_query($link, $sql);
   $fp = fopen("results.csv", "w");

   fputcsv($fp, array("Header 1", "Header 2", "Header 3");

   while($row = mysqli_fetch_array($temp, MYSQLI_ASSOC)){
   fputcsv($fp, $row);
   }

   fclose($fp);

答案 1 :(得分:0)

未经测试,但是像这样:

$added_headers = false;
while($row = mysqli_fetch_array($temp, MYSQLI_ASSOC)){
    if(!$added_headers) {
        fputcsv($fp, array_map(function($field) {return $field->name;}, mysqli_fetch_fields($temp)));
        $added_headers = true;
    }
    fputcsv($fp, $row);
}

答案 2 :(得分:0)

首先将查询列作为标题。在放入数据之前将它们放入csv一次。

$flag = 0; // define a flag to check if header is printed to csv file
while($row = mysqli_fetch_array($temp, MYSQLI_ASSOC)){
 if(!flag){ // if header is not added
    $header =  array_keys($row);
    fputcsv($fp, $header); // add header to csv file
    $flag = 1; // update the flag 
  }
  fputcsv($fp, $row);
}

未经测试,但至少它提供了一些想法。