我想将表查询到.csv文件并自动下载。使用适当的数据创建文件,但下载的文件显示错误的数据。
$filename = 'file.csv';
$i=0;
try {
$stmt = $conn->prepare("SELECT DATE, TYPE, AMOUNT, BALANCE FROM TRANSACTIONS WHERE USERNAME=? ORDER BY DATE ASC");
$stmt->execute(array($user));
$num_rows = $stmt->rowCount();
$handle = fopen($filename, 'w+') or die("can't open file");
fputcsv($handle, array('Date','Type','Amount','Balance'));
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
$row2[$i][0] = $row['DATE'];
$row2[$i][1] = $row['TYPE'];
$row2[$i][2] = $row['AMOUNT'];
$row2[$i][3] = $row['BALANCE'];
$i++;
echo $i;
fputcsv($handle, array($row['DATE'], $row['TYPE'], $row['AMOUNT'], $row['BALANCE']));
}
fclose($handle);
header('Content-disposition: attachment; filename='.$filename);
header("Content-Type: application/force-download");
header("Content-Length: " . filesize($filename));
header("Connection: close");
} catch(PDOException $e) {
echo 'ERROR: ' . $e->getMessage();
}
这是在我的浏览器中下载文件时的样子:
有时它看起来像这样:
这就是它在服务器上创建时的样子:
在服务器上创建的文件始终包含适当的结构和数据。由于某种原因,为用户下载的文件是不同的和错误的。
代码有什么问题?
答案 0 :(得分:0)
我打字
$handle = fopen($filename, 'w+') or die("can't open file");
而不是
$handle = fopen("php://output", "w");