【发布时间】:2016-03-23 16:25:57
【问题描述】:
我有这段 PHP 代码,旨在从 mySQL 数据库中检索数据,并将其导出为 CSV 文件,该文件必须在创建后自动下载。
$connection = mysqli_connect($host, $username, $password, $dbname) or die("Connection Error " . mysqli_error($connection));
// fetch mysql table rows
$sql = "select * from users";
$result = mysqli_query($connection, $sql) or die("Selection Error " . mysqli_error($connection));
$fp = fopen('users.csv', 'w');
while($row = mysqli_fetch_assoc($result)) {
fputcsv($fp, $row);
}
fclose($fp);
header('Content-Type: text/csv');
header('Content-Disposition: attachment; filename="users.csv"');
mysqli_close($connection);
这里的问题是:
- 检索数据。
- 在服务器上的 export.php 文件的同一目录中检索 CSV 文件上面有数据。
- 下载同名文件但它是空的
谢谢。
【问题讨论】:
-
您从不费心输出文件。你需要像
readfile('users.csv')这样的东西来从磁盘读取文件并将其吐出给你的客户。 -
您不输出文件内容您只是发送文件的名称并且它是 CSV。
-
而不是将其写入服务器上的物理文件(如果您有并发用户则有问题)使用
'php://output'作为文件名(并在打开文件之前发送您的标题),它将直接发送它完全不使用任何服务器磁盘到浏览器