데이터를 CSV로 내보내는 SQL 쿼리가 있습니다. 모든 데이터가 내보내기에서 특정 양보다 아래로 떨어질 때까지 제대로 작동합니다.fputcsv 내보낼 데이터가 없을 때 HTML 내보내기
이 임계 값 아래로 내려 가면 레코드가 내보내지고 페이지의 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);
}
미리 감사드립니다.
소리가 출력 버퍼링 문제와 유사합니다. 한 요청에 출력 형식을 혼합해서는 안됩니다. – Phil