簡體   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