繁体   English   中英

导出mysql查询列标题

[英]exporting mysql query column headings

我有以下查询......

    public function get_invoice_user_summary_csv($invoice_table_id)
    {
    $sql_get_user_summ = "
                            SELECT `billingHistory`.`$invoice_table_id`.userId as userId, ipCore.users.firstname, ipCore.users.surname, COUNT(`billingHistory`.`$invoice_table_id`.id) AS totalNum, SUM(`billingHistory`.`$invoice_table_id`.durationSeconds) AS totalDuration, (SUM(`billingHistory`.`$invoice_table_id`.priceMin)+SUM(`billingHistory`.`$invoice_table_id`.priceCon)) AS totalCost
                            FROM `billingHistory`.`$invoice_table_id`
                            LEFT JOIN ipCore.users ON `billingHistory`.`$invoice_table_id`.userId = ipCore.users.id
                            GROUP BY userId
                            ORDER BY ipCore.users.surname ASC, ipCore.users.firstname ASC;";

    $query = $this->db_mtvm->query($sql_get_user_summ);
    if($query->num_rows() > 0)
        {
        foreach ($query->result_array() as $row)
            {
            $line = '';
            $value = '';
            foreach($row as $value)
                {
                if((!isset($value)) || ($value == ""))
                    {
                    $value = ",";
                    }
                else
                    {
                    $value = str_replace( '"' , '""' , $value );
                    $value = '"' . $value . '"' . ",";
                    }
                $line .= $value;
                }
            print substr(str_replace("\r", "", trim($line)), 0, -1)."\r\n";
            flush();
            ob_flush();
            }
        }
    else return false;
    }

这个返回格式化的数组为csv输出放在不同的控制器中。

但它只是数据的主体(正如我预期的那样)。 然而,我已经阅读了一些问题,我认为类似的事情,但在这个例子我需要列出标题的canot非常有效。 手动输入,或者我将从sql查询中分配这些。

您现在通过执行以下操作遍历结果:

foreach ($query->result_array() as $row)

您应该更改脚本,以便在此循环的第一次迭代中,获取列标题并输出它们。 快速执行此操作的方法是将上面引用的行更改为:

$i = 0;
foreach ($query->result_array() as $row)
{
    if($i === 0)
        echo implode(",", array_keys($row)) . "\r\n";
    $i++;
    [...]

我注意到你自己创建了CSV字符串。 更简单的方法是使用fputcsv() 默认情况下,它会写入文件句柄,但您也可以在内存中缓冲输出并将结果作为字符串获取, 如此示例所示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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