我们建立了一个在线应用程序,我们的客户可以从表中过滤结果,并将结果导出为CSV。
问题是当我将其导出为CSV时,它总是会跳过结果的第一行。
以下是printcsv.php的代码
$noheader = 1;
$protected = 1;
if(isset($_POST['query']) && $_POST['query'] != ''){
$_GET['query'] = $_POST['query'];
}
if (isset($_GET['query'])){
if(strpos($_GET['query'], 'limit')) {
$_GET['query'] = substr($_GET['query'], 0, strpos($_GET['query'], 'limit'));
}
include('system/system.php');
$results = SQLselectRA(stripslashes($_GET['query']));
$x = 0;
header('Content-Type: application/excel');
header('Content-Disposition: attachment; filename="printcsv.csv"');
$file = fopen("php://output","w");
$header = array();
foreach($results as $keyvalue => $row) {
if($x == 0) {
foreach($row as $key => $data) {
$header[]= str_replace('_', ' ', strtoupper($key));
}
$row = $header;
}
fputcsv($file, $row);
$x++;
}
如果有人可以帮助我,那就太好了。
此致
答案 0 :(得分:2)
您应该使用除$row
之外的其他变量来编写标题数据,该变量包含第一行数据,但是在设置标题时会覆盖
foreach($results as $keyvalue => $row) {
if($x == 0) {
foreach($row as $key => $data) {
$header[]= str_replace('_', ' ', strtoupper($key));
}
fputcsv($file, $header);
}
fputcsv($file, $row);
$x++;
}