2016-02-26 55 views
0

我有一個腳本,它接受一條SQL語句並將查詢結果放入一個CSV文件中。現在它只有表格的行,我希望它把表格的標題放在最上面。我將如何使用這個當前腳本來做到這一點?需要將表標題添加到導出的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版本。

回答

2

首先,回答你的問題:輸出你的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_*功能已過時,deprecated,並且不安全。改爲使用MySQLiPDO。如何做到這一點對於單個問題來說太廣泛了。如果您在某些方面遇到困難,請提出一個新的問題。

第三,吞嚥/抑制錯誤@被認爲是不好的做法,可能會導致意想不到的結果。請改用適當的try { ... } catch (...) {...}塊,以便根據需要處理/記錄/報告錯誤。

+0

因爲我得到一個錯誤,說'fputcsv()期望參數2是數組「。 –

+0

還有一種方法可以自動填充標題嗎? –

+0

@RobertHolden哎呀。我的例子應該使用'fwrite',而不是'fputcsv'。我編輯了答案併爲這兩個函數提供了示例代碼。 –

相關問題