2017-08-07 133 views
0

试图用我们的数据库导出来创建一个csv文件。这是我使用的代码:PHP打印到浏览器而不是CSV文件

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

    header('Content-Type: text/csv; charset=utf-8'); 
    header('Content-Disposition: attachment; filename=data.csv'); 
    $output = fopen("php://output", "w"); 
    fputcsv($output, array('ID', 'Name', 'Email', 'Phone')); 
    $query = "SELECT userID, name, email, phone from user ORDER BY userID DESC"; 
    $result = mysql_query($query); 
    while($row = mysql_fetch_assoc($result)) 
    { 
     fputcsv($output, $row); 
    } 
    fclose($output); 

当我单击导出按钮时,它会在浏览器中加载此正确结果的PHP页面。但是我无法获得结果存储在文件中。任何帮助,将不胜感激。

+0

这些头文件非常简单,我如何创建CSV下载(尽管没有utf-8,但这应该不是问题)。可能的问题:第一,验证头文件是否发送到浏览器(F12然后是网络标签),可能(不需要)输出,然后设置头文件将会破坏它们(在error_log中也会引发警告)。第二:尝试引用文件名'filename =“data.csv”',可以肯定的是,第三:尝试其他浏览器来验证这不是一个浏览器错误(你不会是第一个) –

+0

嘿@PetervanderWal,谢谢为回应。 1.我在预览中看到包含所有数据库数据的正确标题。 2.试着引用文件名,不幸的是,没有。 3.在Chrome和Firefox中试过 – matture

回答

0

尝试使用这些内容类型中的一种:

header('Content-Type: application/vnd.ms-excel'); 
header('Content-Type: application/octet-stream'); 
+0

现在它刚刚打开一个空白的PHP页面(之前有正确的输出)。这可能是一个权限问题? – matture

+0

这将存储文件服务器端。当我正确地阅读这个问题时,Matture正在尝试创建一个“下载CSV”链接。 –

+0

这是正确的@PetervanderWal。我想下载文件客户端。 – matture

-1

尝试取出fclose($output);线。

0

尝试在文件输出前发送header("Content-Type: application/force-download");

相关问题