我有一个将数据写入 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);
}
当前结果是一个包含表中所有数据转储的页面。未在所需位置创建文件。我哪里出错了?
客户端不知道这是一个 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 http://php.net/manual/en/function.header.php
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)