简体   繁体   English

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

[英]Add Header to CSV export in PHP

I'm trying to export my data into a CSV in PHP after running some queries on it. 我试图在PHP上运行一些查询后将数据导出到CSV中。 So far, I'm able to successfully to do so using: 到目前为止,我可以成功使用以下方法完成此操作:

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

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

   fclose($fp);

However, I don't understand how to keep the headers that my SQL query forms. 但是,我不明白如何保留我的SQL查询形式的标头。

The basics is, just insert the first row as your headers manually 基础是,只需手动插入第一行作为标题

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

Untested, but something like this: 未经测试,但是像这样:

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

First get the query columns as headers. 首先获取查询列作为标题。 Put them to csv once before putting the data. 在放入数据之前,将它们放入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);
}

Not tested but at least it gives some idea. 未经测试,但至少可以提供一些想法。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM