-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 に答える