繁体   English   中英

将需要表标题添加到导出的CSV文件中

[英]Need Table headings added to exported CSV file

我有一个采用SQL语句并将查询结果放入CSV文件的脚本。 现在,它仅是表的行,我希望它将表的标题放在顶部。 我将如何使用当前脚本执行此操作?

脚本...

<?php

include 'connect.php'; 

header('Content-Type: text/csv; charset=utf-8');
header('Content-Disposition: attachment;filename="export.csv"');
header('Cache-Control: max-age=0');

$fpcsv = fopen('php://output', "a+");

$sqlstatement = $_GET['sqlstatement'];
$exportcsv_q = mysql_query($sqlstatement);
if (@mysql_num_rows($exportcsv_q) > 0) {
    $campos = mysql_num_fields($exportcsv_q);
    while ($exportcsv_r = mysql_fetch_row($exportcsv_q)) {
         fputcsv($fpcsv, $exportcsv_r);
    }
}
exit;
?>

如果有人在那里有这个的mysqli版本,我希望能够切换到这个版本。

首先,您的问题的答案:在while循环之前输出标头:

if (@mysql_num_rows($exportcsv_q) > 0) {
    // output headers here
    fwrite($fpcsv, "header1,header2,foo,bar,..."); // <-- like this
    // if you want, you could do it this way:
    // fputcsv($fpcsv, array("header1", "header2", ...));

    $campos = mysql_num_fields($exportcsv_q);
    while ($exportcsv_r = mysql_fetch_row($exportcsv_q)) {
         fputcsv($fpcsv, $exportcsv_r);
    }
}

如果即使没有数据也要具有标题,也可以将该行移至if块之外。

其次,是的,您应该停止使用mysql_* mysql_*函数已过时, 过时和不安全。 改用MySQLiPDO 对于此处的单个问题,该如何做才太广泛了。 如果您在某些方面陷入困境,请提出一个新的问题。

第三,用@吞咽/抑制错误被认为是不良做法,并且可能导致意外结果。 请改用适当的try { ... } catch (...) {...}块,以便您可以根据需要处理/记录/报告错误。

暂无
暂无

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

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