[英]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.