我有将数据导出到 CSV 的 SQL 查询。一切正常,直到我在导出中低于一定数量的数据。
当我低于此阈值时,将导出记录,然后是页面的 html。
如果我在 header.html 上添加更多字符,问题就解决了。我已经对此进行了测试和重新测试,html 页面上任何地方的一个文本字符是导出整个 html 或仅导出记录之间的区别。
这听起来太奇怪了,我希望有人经历过类似的事情,并且可以告诉我在哪里看或我应该在这里粘贴代码的哪个特定部分:
这是 fputcsv 部分:
if(isset($_SESSION['query_file']))
{
$query = $_SESSION['query_file'];
unset($_SESSION['query_file']);
$stmt = $dbh->query($query);
$results = $stmt->fetchAll();
$link = 'csv/'. Utils::rand_code(10).'.csv' ;
$fp = fopen(SITE_ROOT.$link,'w');
$first_row = array(
'Name',
'ID',
'Email',
'Response',
'Phone'
);
fputcsv($fp, $first_row);
foreach($results as $key=>$value)
{
$array_add = array(
$value['user_last_name'].''.$value['user_first_name'],
$value['user_id'],$value['user_email'],$value['user_response'],
$value['user_phone']
);
fputcsv($fp, $array_add);
};
fclose($fp);
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Length: ". filesize(SITE_ROOT.$link).";");
header("Content-Disposition: attachment; filename=".$link);
header("Content-Type: application/octet-stream; ");
header("Content-Transfer-Encoding: binary");
readfile(SITE_ROOT.$link);
unlink(SITE_ROOT.$link);
}
提前致谢。