テーブルを .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();
}
これは、私のブラウザでダウンロードしたときのファイルの外観です。
時々、次のようになります。
サーバー上で作成すると、次のようになります。
サーバー上に作成されるファイルには、常に適切な構造とデータが含まれています。ユーザー用にダウンロードされたファイルは、何らかの理由で異なり、間違っています。
コードの何が問題になっていますか?