我正在使用来自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的方式有什么问题吗?请协助。
答案 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 = ?