2011-11-29 53 views
3

首先,我很抱歉如果我在這裏問的問題是愚蠢的,我試圖在網上找到答案,但我似乎無法把搜索字詞一小段話(設法回答我的問題)。其次,我知道我的問題的答案非常簡單,但我對PHP/Scripting相當陌生,並且在試圖找到解決方案時已經擱置了好幾個小時。PHP - Oracle查詢CSV創建,在同一行返回結果

我有一個PHP腳本,它查詢Oracle數據庫,輸出到CSV文件,然後通過電子郵件將文件發送給我。這很好,除了我希望查詢的所有結果輸出到單個行。

我想設置一個自動化,它運行多個查詢(每個查詢都有大約5-10行)以輸出到CSV文件。 php的文件的摘錄如下:

$csvLength = fputcsv($tmp, array(
    'Code', 
    'count(*)' 
)); 

while ($row = $result->fetchRow(DB_FETCHMODE_ASSOC)) 
{ 
    $csvLength += fputcsv($tmp, array(
     $row['Code'], 
     $row['COUNT(*)'] 
    )); 
} 

rewind($tmp); 
$csvContent = fread($tmp, $csvLength); 
fclose($tmp); 

這會寫一個CSV與輸出是這樣的文件:

Code,count(*) 
APPLE,201 
ORANGE,504 
BANANA,864 

我要的是輸出去是這樣的:

Code,count(*),Code,count(*),Code,count(*) 
APPLE,201,ORANGE,504,BANANA,864 

(頂行並不一定需要輸出一個以上的代表)

我可以TH恩添加到PHP腳本,以包括更多查詢,以創建CSV文件最終會是這樣的:

Run blah.php from dates 21/11/2011 to 27/11/2011... 
Code,count(*),Code,count(*),Code,count(*) 
APPLE,201,ORANGE,504,BANANA,864 

Reason,count(*),Reason,count(*),Reason,count(*) 
Rotten,10,Bruised,42,Fermented,67 

Region,count(*),Region,count(*),Region,count(*) 
Oddtown,503,Newtown,204,Averagetown,631 

預先感謝任何人都可以回答我的問題。我再次可以想象,答案可能非常簡單,但我嘗試的任何東西似乎都會給我帶來錯誤,而且我無法在任何地方找到答案。

回答

1

我把我的結果在一個數組,像這樣:

$arr = array('Apple', '201', 'Orange', 504); 

然後我會使用fprintfimplode打印他們排成一排:

if (!($fp = fopen('file.txt', 'w'))) { 
    exit; 
} 
fprintf($fp, "%s\n",implode(",", $arr)); 

這將輸出

Apple,201,Orange,504

對於列名稱,您只需獲取多次結果並多次打印即可。例如,如果有5個結果,我會這樣做:

fprintf($ fp,「%s \ n」,implode(「,」,array_fill(0,5,「Code,count(*) 「) ));

+1

花了我一段時間,將其納入我的腳本,但你絕對帶領我在正確的方向,我終於得到它的工作!非常感謝Jeune :) –