编程语言
首页 > 编程语言> > php – 我的csv导出显示html,如何摆脱?

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

作者:互联网

我之前见过这个问题,在尝试了一些解决方案之后我无法正常工作.问题是我无法正确地将数据导出为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');

}

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

解决方法:

搞定了!

我在页面上的任何内容之前调用了我的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();
}

标签:export-to-csv,php,mysql,csv
来源: https://codeday.me/bug/20191001/1838080.html