-1

このSOの質問の解決策を使用して、ユーザーにcsvファイルをダウンロードさせています。ただし、私の CSV 出力には、出力ごとに 2 つのエントリが含まれています。たとえば、予想される出力が 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への書き込み方法に問題はありますか? 手伝ってください。

4

2 に答える 2

3

sqlsrv_fetch_array($クエリ)

次に使用可能なデータ行を、連想配列、数値配列、またはその両方(デフォルト) として返します。

(私の強調)

使用する

sqlsrv_fetch_array($query, SQLSRV_FETCH_ASSOC)

また

sqlsrv_fetch_array($query, SQLSRV_FETCH_NUMERIC)
于 2012-05-14T12:11:52.613 に答える
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 = ?
于 2012-05-14T12:06:49.323 に答える