我的csv导出显示html,如何摆脱?

wow*_*uzz 2 php mysql csv export-to-csv

我之前见过这个问题,在尝试了一些解决方案之后我无法正常工作.问题是我无法正确地将数据导出为csv格式.在我添加我的ob_end_clean之前,它会导出到带有html的csv,现在它不会给我一个csv,只是文本.

这是我需要的文件代码.

if (isset($_POST["hidden"])) {

$list = array (
    array('aaa', 'bbb', 'ccc', 'dddd'),
    array('123', '456', '789'),
    array('"aaa"', '"bbb"')
);

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

    foreach ($list as $row) {
        ob_end_clean();
        fputcsv($fp, $row);
    }

    header('Content-Type: text/csv; charset=utf-8');
    header('Content-Disposition: attachment; filename=data.csv');

}
Run Code Online (Sandbox Code Playgroud)

现在当我进行导出时,数据会被放回到屏幕上,类似于var_dump().我只是想让它转到一个csv文件而不需要全部使用html.

wow*_*uzz 16

搞定了!

我在页面上的任何内容之前调用了我的csv代码.:)然后我连接到我的表,然后我的代码的逻辑.我的主文件中没有ob_start或ob_flush,这有很大的不同.我在while循环之前有ob_clean然后在声明头之后我做了一个exit().希望,这很好地解释了它.

这是我的代码.

if (isset($_POST["hidden"])) {
    $sql = "SELECT * FROM `newsletter`";
    $result = mysql_query($sql);

    ob_end_clean();

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

    while ($list = mysql_fetch_assoc($result)) {
        fputcsv($fp, $list);
    }

    header('Content-Type: text/csv; charset=utf-8');
    header('Content-Disposition: attachment; filename=data.csv');

    exit();
}
Run Code Online (Sandbox Code Playgroud)

  • 谢谢你发布答案.你救了我的一天. (2认同)

小智 5

放置,ob_end_clean(); 在输出 csv 之前。

ob_end_clean() 含义:“清理(擦除)输出缓冲区并关闭输出缓冲” - PHP 手册。