在php中将MySQL查询写入CSV

时间:2017-10-03 20:29:22

标签: php mysql csv

我正在尝试将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;
            }

2 个答案:

答案 0 :(得分:1)

您需要删除标题并编辑该行以将文件路径添加到其中:

ERRORHANDLER

例如

$ fp = fopen ('php: // output', 'w');

FOR HTTP:

$ fp = fopen ('c:\\folder\\resource.txt', 'w');

答案 1 :(得分:0)

如果您不想更改脚本,则需要管道输出。

由于您使用powershell,因此它看起来像

php myscript.php | Out-File c:\output.csv

如果您使用的是Linux或OS X,它将会是这样的

php myscript.php > output.csv