【问题标题】:CSV file contain double entries PHP SQL SERVERCSV 文件包含双条目 PHP SQL SERVER
【发布时间】:2012-05-14 12:01:59
【问题描述】:

我正在使用来自this SO question 的解决方案让用户下载 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 的方式有什么问题吗?请帮忙。

【问题讨论】:

    标签: php sql fputcsv


    【解决方案1】:

    sqlsrv_fetch_array($query)

    以关联数组、数值数组或两者(默认)的形式返回下一个可用数据行。

    (我的重点)

    使用

    sqlsrv_fetch_array($query, SQLSRV_FETCH_ASSOC)
    

    sqlsrv_fetch_array($query, SQLSRV_FETCH_NUMERIC)
    

    【讨论】:

    • var_dump($row) 放入循环中会看到哪个 OP。
    【解决方案2】:

    尝试更改您的查询:

    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 = ?
    

    【讨论】:

    • 试过了,同样的输出。当我在 SQL Management Studio 中运行我的示例和您的示例中的查询时,它们运行良好。
    猜你喜欢
    • 2016-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-31
    • 2019-09-26
    • 2021-12-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多