CSV文件包含双重条目PHP SQL SERVER

时间:2012-05-14 12:01:59

标签: php sql fputcsv

我正在使用来自this SO问题的解决方案来让用户下载csv文件。但是我的CSV输出包含每个输出的双重条目,例如,如果预期输出是1,2,3,4,5我得到1,1,2,2,3,3,4,4,5,5。 我的查询没问题,因为它输出了实际结果。 这是查询:

SELECT * FROM tablea,tableb WHERE tablea.Reference_No = tblb.Reference_No AND tablea.Reference_No = ? ";

这是我生成和下载查询结果副本的代码

$query = sqlsrv_query($conn,$select,array($refno),array("Scrollable"=>SQLSRV_CURSOR_STATIC)) or die(print_r(sqlsrv_errors()));
$count = sqlsrv_num_rows($query);
$openfile = fopen('../CSV/try.csv','w+');
while($row=sqlsrv_fetch_array($query))

      {
         fputcsv($openfile, $row); 
    }

fclose($openfile);
$file ='../CSV/try.csv'; 
if (file_exists($file)) {
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename='.basename($file));
    header('Content-Transfer-Encoding: binary');
    header('Expires: 0');
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Pragma: public');
    header('Content-Length: ' . filesize($file));
    ob_clean();
    flush();
    readfile($file);
   // exit;
}

使用PHP和SQL Server。查询或我写入csv的方式有什么问题吗?请协助。

2 个答案:

答案 0 :(得分:3)

  
    

sqlsrv_fetch_array($查询)

         

以关联数组,数字数组或两者(默认值)返回下一个可用数据行。

  

(我的重点)

使用

sqlsrv_fetch_array($query, SQLSRV_FETCH_ASSOC)

sqlsrv_fetch_array($query, SQLSRV_FETCH_NUMERIC)

答案 1 :(得分:0)

尝试使用以下命令更改查询:

SELECT * FROM tablea INNER JOIN tableb 
    ON tablea.Reference_No = tableb.Reference_No
WHERE tablea.Reference_No = ?

SELECT * FROM tablea INNER JOIN tableb 
    ON tablea.Reference_No = tableb.Reference_No
   AND tablea.Reference_No = ?