首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在php中将MySQL查询写入CSV

在php中将MySQL查询写入CSV
EN

Stack Overflow用户
提问于 2017-10-03 20:29:21
回答 2查看 52关注 0票数 2

我正在尝试将MYSQL查询的结果写入CSV并出现问题。查询工作正常,当我在powershell中运行时,它会在powershell中打印完美的CSV数据,但是在我的CPU上找不到这个文件。

我怎样才能给CSV写信呢?

代码语言:javascript
复制
$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;
            }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-10-03 20:34:31

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

代码语言:javascript
复制
$ fp = fopen ('php: // output', 'w');

,例如

代码语言:javascript
复制
$ fp = fopen ('c:\\folder\\resource.txt', 'w');

FOR HTTP:

代码语言:javascript
复制
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;
}
票数 1
EN

Stack Overflow用户

发布于 2017-10-03 20:47:49

如果不想更改脚本,则需要对输出进行管道传输。

由于您使用的是powershell,所以如下所示

代码语言:javascript
复制
php myscript.php | Out-File c:\output.csv

如果您使用的是linux或OS,则如下所示

代码语言:javascript
复制
php myscript.php > output.csv
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46552915

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档