首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >fputcsv生成不带换行符的行

问fputcsv生成不带换行符的行
EN

Stack Overflow用户
提问于 2021-08-02 10:57:13
回答 1查看 26关注 0票数 1

下面是删除了SQL部件的完整代码。我希望它开始下载CSV文件与数据从数据库。但是当我访问csv数组时,它出人意料地以几乎正确的格式打印所有数据,但忽略了换行符,而是放入了‘’(空格)。

代码语言:javascript
复制
$csv = array(
    array('RECID', 'UID', 'Amount', 'Sumbit Date') 
);

while($row = mysql_fetch_row($results)) // SQL query isn't reason 100%
{
    $csv[] = array($row[0], $row[1], $row[2], $row[3]);
}

$fp = fopen('php://output', 'w');

//this part is unexpected
foreach($csv as $line){
    fputcsv($fp, $line);
}

header("Cache-Control:maxage=1");
header("Pragma: public");
header("Content-Type:text\csv; charset=UTF-8" );
header('Content-Disposition: attachment; filename=csv.csv');

fpassthru($fp);

fclose($fp);

如果更改foreach循环并逐行调用fputcsv元素,它会正确执行所有操作。下载开始,CSV工作正常。

代码语言:javascript
复制
fputcsv($fp, $csv[0]);
fputcsv($fp, $csv[1]);
fputcsv($fp, $csv[2]);

但是,当您尝试使用任何循环遍历数组时,它会忽略换行符,并输出不带换行符但以‘’作为换行符的数据。此外,它不下载,它只是在浏览器中打印所有数据。

代码语言:javascript
复制
foreach($csv as $line){
    fputcsv($fp, $line);
}

如何修复这个问题,让我的脚本像预期的那样工作(换行并开始下载)?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-02 11:33:47

有一个未知的bug,当你一行一行地写fputcsv时,你把它写在哪里并不重要,但是,如果你在循环中写,循环必须在所有的头之后!

代码语言:javascript
复制
header("Cache-Control:maxage=1");
header("Pragma: public");
header("Content-Type:text\csv; charset=UTF-8" );
header('Content-Disposition: attachment; filename=csv.csv');

for($i = 0; $i < count($csv); $i++){
    fputcsv($fp, $csv[$i]);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68620420

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档