将文件从数据库导出到csv时,它会在表列名称的行中显示内容

While exporting file to csv,my contents are added in the same row of column names.I want content just below to the respective columns.The code is as follow

     <?php
        $filename = "file.csv";
        $fp = fopen('php://output', 'w');           
        header('Content-type: application/csv');
        header('Content-Disposition: attachment; filename='.$filename);
        $headerLine = 'Sr. No,Name,DOB,Address';
        fwrite($fp, $headerLine);
         $query = "select * from registratin";
        $result = mssql_query($query);
        $i = 1;
        while($row = mssql_fetch_row($result)) {
          $row = array_merge(array($i), $row);
          fputcsv($fp, $row);
          $i++;
        }

      ?>

You can do it simply as follows , there is no need to array merge

<?php
        $filename = "file.csv";
        $fp = fopen('php://output', 'w');           
        header('Content-type: application/csv');
        header('Content-Disposition: attachment; filename='.$filename);
        $headerLine = 'Sr. No,Name,DOB,Address';
        fputcsv($fp, explode(",",$headerLine); // adding heading
        $query = "select * from registratin";
        $result = mssql_query($query);
        $i = 1;
        while($row = mssql_fetch_row($result)) {
          //$row = array_merge(array($i), $row); ***no need***
          fputcsv($fp, $row);
          $i++;
        }
        fclose($fp);

?>

Its better to use mysqli, and this is the simple way to get the work done. And in select choose only required columns.

header('Content-Type: text/csv; charset=utf-8');
header('Content-Disposition: attachment; filename=data.csv');
$output = fopen('php://output', 'w');

fputcsv($output, array('SR No', 'Name','DOB','Address'));

$conn = mysqli_connect('localhost', 'root', 'password',"database");
$rows = mysqli_query($conn,'SELECT * from registration');

while ($row = mysqli_fetch_assoc($rows))
    fputcsv($output, $row);