title: php export mysql data with dynamic columns to csv
body: <p>iam new to php, i know how to export mysql results with static columns to csv, but in some cases i will have to export dynamically without specifying the column names. i have tried this below, i would need help to make this work please.</p>
  
  <p><strong>PHP</strong></p>
  
  <pre><code>&lt;?php
  if(isset($_POST['action']) &amp;&amp; $_POST['action'] == 'test_export_to_csv'){
  
  
  $head_qry = mysql_query("SELECT `header_display_name` FROM expense_heading WHERE expense_id='$expense_id' order by col_order");
  
  $columnValues = Array();
  
  while ( $row = mysql_fetch_assoc($head_qry) ) {
  
    $columnValues[] = $row['columnname'];
  
  }
  $filename = "uploads/reports/".$invoice_id.".csv";
  $file = fopen($filename, 'w+');
  
  fputcsv($file,$columnValues);   
  
  $data_qry="SELECT $columnValues from invoice_detail where invoice_id='$invoice_id'";
  
  $data_result=mysql_query($data_qry);
  while($result=mysql_fetch_assoc($data_result)){
      $report_array=array($result[$columnValues]);
      fputcsv($file, $report_array);
  }
  fclose($file);
  
  if(ini_get('zlib.output_compression'))
  ini_set('zlib.output_compression', 'Off');
  
  
  header("Pragma: public"); // required
  header("Expires: 0");
  header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
  header("Cache-Control: private",false); // required for certain browsers
  header("Content-Type: $ctype");
  
  // change, added quotes to allow spaces in filenames
  header("Content-Disposition: attachment; filename=\"".basename($filename)."\";" );
  header("Content-Transfer-Encoding: binary");
  header("Content-Length: ".filesize($filename));
  readfile("$filename");
  exit();  
  }
  </code></pre>