2011-11-29 55 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 :) –