[英]Write MySQL query to CSV in php
我正在尝试将 MYSQL 查询的结果写入 CSV 并遇到问题。 查询有效,当我在 powershell 中运行时,它会在 powershell 中打印出完美的 CSV 数据,但在我的 CPU 上找不到该文件。
我如何物理写入 CSV?
$result = $conn2->query(
"SELECT firstn
, lastn
, extension
, Recieved
, RecievedKnown
, Outbound
, outboundKnown
, Missed
, MissedKnown
, CallingNumber
, CalledNumber
, starttime
, endtime
, duration
, HOLDTIMESECS
, TERMINATIONREASONCODE
FROM (
SELECT u.firstn
, u.lastn")
//Long query, removing unnecessary code
);
if (!$result) die('Couldn\'t fetch records');
$num_fields = mysql_num_fields($result);
$headers = array();
while ($fieldinfo = mysqli_fetch_field($result)) {
$headers[] = $fieldinfo->name;
}
$fp = fopen('php://output', 'w');
if ($fp && $result) {
header('Content-Type: text/csv');
header('Content-Disposition: attachment; filename="dailyReportTestPHP.csv"');
header('Pragma: no-cache');
header('Expires: 0');
fputcsv($fp, $headers);
while ($row = $result->fetch_array(MYSQLI_NUM)) {
fputcsv($fp, array_values($row));
}
die;
}
您需要删除标题并编辑该行以将文件路径添加到其中:
$ fp = fopen ('php: // output', 'w');
例如:
$ fp = fopen ('c:\\folder\\resource.txt', 'w');
对于 HTTP:
if ($result) {
header("Content-type: text/csv");
header("Content-Disposition: attachment; filename=dailyReportTestPHP.csv");
header("Pragma: no-cache");
header("Expires: 0");
$fp = fopen('php://output', 'w');
fputcsv($fp, $headers);
while ($row = $result->fetch_row()) {
fputcsv($fp, $row);
}
fclose($fp);
die;
}
如果您不想更改脚本,则需要管道输出。
由于您使用的是powershell
它看起来像这样
php myscript.php | Out-File c:\output.csv
如果您使用的是 linux 或 OS X,它看起来像这样
php myscript.php > output.csv
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.