我尝试在运行一些查询后将数据导出为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查询形成的标头。
答案 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);
}
未经测试,但至少它提供了一些想法。