繁体   English   中英

在php中将MySQL查询写入CSV

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM