目前我的代码将数据导出到 CSV 文件,并将其存储在服务器上。但我想让它下载文件。我该怎么做呢?
Currently my code exports data to a CSV file, and stores it on the server. But I want it to download the file. How do I do this?
我过去曾尝试使用 headers 执行此操作,但它要么下载了空 CSV 文件,要么下载了 PHP 文件本身。
<?php
$database = new PDO('mysql:host=localhost;dbname=DB_Name', "root", "");
$sql = "SELECT Card_ID, Card_UID, Card_Type FROM cards";
$stmt = $database->prepare($sql);
$stmt->execute();
$filename = 'MyCSVFile-'.date('Y-m-d').'.csv';
$data = fopen($filename, 'w');
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
fputcsv($data, $row);
}
fclose($data);
?>
像这样尝试你会得到你的结果。
<?php
$database = new PDO('mysql:host=localhost;dbname=DB_Name', "root", "");
header('Content-Type: text/csv; charset=utf-8');
header('Content-Disposition: attachment; filename=data.csv');
$sql = "SELECT Card_ID, Card_UID, Card_Type FROM cards";
$stmt = $database->prepare($sql);
$stmt->execute();
$data = fopen('php://output', 'w');
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
fputcsv($data, $row);
}
fclose($data);
?>
我过去曾尝试使用 headers 执行此操作,但它要么下载了空 CSV 文件,要么下载了 PHP 文件本身。
<?php
$database = new PDO('mysql:host=localhost;dbname=DB_Name', "root", "");
$sql = "SELECT Card_ID, Card_UID, Card_Type FROM cards";
$stmt = $database->prepare($sql);
$stmt->execute();
$filename = 'MyCSVFile-'.date('Y-m-d').'.csv';
$data = fopen($filename, 'w');
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
fputcsv($data, $row);
}
fclose($data);
?>
像这样尝试你会得到你的结果。
<?php
$database = new PDO('mysql:host=localhost;dbname=DB_Name', "root", "");
header('Content-Type: text/csv; charset=utf-8');
header('Content-Disposition: attachment; filename=data.csv');
$sql = "SELECT Card_ID, Card_UID, Card_Type FROM cards";
$stmt = $database->prepare($sql);
$stmt->execute();
$data = fopen('php://output', 'w');
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
fputcsv($data, $row);
}
fclose($data);
?>