小编典典

通过浏览器使用PDO将MySQL表中的数据存储为CSV

sql

我有一种将数据写入MySQL数据库的表单。我希望用户能够CSV在最终提交后以格式下载数据。

我的代码当前正在将数据库的内容转储到浏览器中,即正在将其写入页面,而不是csv文件。我想将它们发送到链接,并可以选择下载文件。

这是我当前的代码:

$dbo = new PDO('mysql:host=localhost;dbname=db1', $username, $password);
$sql = "SELECT * FROM table1";
$qry = $dbo->prepare($sql);

// Execute the statement
$qry->execute();
var_dump($qry->fetch(PDO::FETCH_ASSOC));
$data = fopen('/tmp/db_user_export_".time().".csv', 'w');
while ($row = $qry->fetch(PDO::FETCH_ASSOC))
{
    echo "Success";
    // Export every row to a file
    fputcsv($data, $row);
}

当前结果是一个页面,其中包含表中所有数据的转储。没有在所需位置创建文件。我要去哪里错了?


阅读 178

收藏
2021-04-28

共1个答案

小编典典

客户端不知道这是CSV文件(毕竟只是文本!)。

尝试在任何输出之前添加此内容(在脚本顶部):

header("Content-type: text/csv");
header("Content-Disposition: attachment; filename=file.csv");
header("Pragma: no-cache");
header("Expires: 0");

基本上,您是在告诉客户端/浏览器要发送CSV文件的数据。

那应该工作。

您可以在此处找到有关标题的更多信息:http :
//php.net/manual/en/function.header.php

2021-04-28