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