我按照給出的解釋here將查詢結果寫入文件。 但在這種情況下,我必須先打開並寫入文件標題。然後繼續爲多個查詢編寫/附加查詢結果。這個附加的部分我已經寫成了一個函數。我的腳本只有頭文件(從第一部分)寫入文件的問題,它不會在調用函數時遵循函數中的fputcsv命令。你能幫我解決這個問題嗎?fputcsv和fwrite不起作用
這裏是我的代碼先打開文件:
<?php
$fp = fopen('php://output', 'w');
$headers = array("Index","Gene_symbol","Gene_Name","Human_entrez","Rat_entrez","Mouse_entrez","DbTF","PMID");
header('Content-Type: text/csv');
header('Content-Disposition: attachment; filename="export.txt"');
fputcsv($fp, $headers,chr(9));
header('Pragma: no-cache');
header('Expires: 0');
?>
然後查詢部分有點像這樣(我有這樣的查詢部分的多個每一個調用同一個功能):
<?php
if (is_numeric($sterm))
{
$query="select * from tf where entrez_id_human=$sterm || entrez_id_rat=$sterm || entrez_id_mouse=$sterm";
$result=mysql_query($query) or die(mysql_error());
if (mysql_num_rows($result)==0)
{echo "<tr><td align='center' colspan=6> $sterm not found! </td> </tr>";}
elseif (mysql_num_rows($result)>0)
{result_disp($result);}
}
?>
然後再將結果通過函數到文件是在這裏:
<?php
function result_disp($results)
{
if($fp && $results)
{
while ($rows = mysql_fetch_row($results))
{
fputcsv($fp, array_values($rows),chr(9));
} die;
}
}
最後關閉在腳本文件的末尾
fclose($fp);
?>
感謝
$ fp在您的功能中不可用。將你的error_reporting設置爲一個合理的調試值(E_ALL),然後PHP會告訴你這樣的東西本身。並閱讀變量範圍的基礎知識,http://www.php.net/manual/en/language.variables.scope.php – CBroe
另請注意,csv-headers位於HTTP標頭之間。應該在後者以換行符分隔後放置它們。 – Caramiriel
謝謝,我在代碼的開頭嘗試了error_reporting(E_ALL),但它沒有報告任何錯誤:(。其次在頁面上爲全局變量提供建議我無法找到如果文件句柄$ fp可以聲明爲全局。 $ fp無論是在外部還是在函數內部,但它也沒有幫助。任何建議我怎麼能使它成爲全局的。謝謝 –