-1

我想查询一个表到一个 .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(); 
    }

这是文件在我的浏览器中下载时的样子: 在此处输入图像描述

有时它看起来像这样: 在此处输入图像描述

这是它在服务器上创建时的样子: 在此处输入图像描述

在服务器上创建的文件始终包含适当的结构和数据。由于某种原因,为用户下载的文件不同且错误。

代码有什么问题?

4

1 回答 1

0

我打了

$handle = fopen($filename, 'w+')  or die("can't open file");

代替

$handle = fopen("php://output", "w");
于 2013-02-01T17:44:49.420 回答