2017-06-28 16 views
1

テーブルのcsvフォーマットでファイルをダウンロードできますが、同じファイルにカラムヘッダーを追加する方法はありますか?Wordpress - カラムヘッダーを使用してcsvにmysqlテーブルをエクスポートする

現在のコードは以下の通りです -

// load wpdb 
    $path = $_SERVER['DOCUMENT_ROOT']; 
    include_once $path . '/wp-load.php'; 

    global $wpdb; 

    $table = $_POST["table_name"];// table name 
    $file = 'database_csv'; // csv file name 
    $results = $wpdb->get_results("SELECT * FROM $wpdb->prefix$table",ARRAY_A); 

    if(count($results) > 0){ 
     foreach($results as $result){ 
     $result = array_values($result); 
     $result = implode(", ", $result); 
     $csv_output .= $result."\n"; 
    } 
    } 

    $filename = $file."_".date("Y-m-d_H-i",time()); 
    header("Content-type: application/vnd.ms-excel"); 
    header("Content-disposition: csv" . date("Y-m-d") . ".csv"); 
    header("Content-disposition: filename=".$filename.".csv"); 
    header("Pragma: no-cache"); 
    header("Expires: 0"); 
    print $csv_output; 
    exit; 
+0

'$ csv_output =「列1、列2 ; Column3; "? –

+0

@u_mulder私は動的にこれを自動化するための列名を取得する:) –

+0

次に検索を使用します。私はこれを見つけたhttps://stackoverflow.com/questions/4165195/mysql-query-to-get-column-names –

答えて

0

私は最初のカラム名を取得してから最終的な出力に割り当てることによって、それを行うことができました:

$table_name = $wpdb->prefix.$_POST["table_name"];// table name 
         $file = 'database_csv'; // csv file name 
         $results = $wpdb->get_results("SELECT * FROM $table_name",ARRAY_A); 

         // get column names 
         $query = "SELECT `COLUMN_NAME` FROM `INFORMATION_SCHEMA`.`COLUMNS` WHERE `TABLE_SCHEMA`='".$wpdb->dbname."' AND `TABLE_NAME`='".$table_name."'"; 

         $columnNamesList = $wpdb->get_results($query); 


         foreach ($columnNamesList as $column_name) { 
          $csv_output.=$column_name->COLUMN_NAME.","; 
         } 


         // remove last additional comma 
         $csv_output = substr($csv_output,0,strlen($csv_output)-1); 

         // start dumping csv rows in new line 
         $csv_output.="\n"; 

         if(count($results) > 0){ 
          foreach($results as $result){ 
          $result = array_values($result); 
          $result = implode(", ", $result); 
          $csv_output .= $result."\n"; 
         } 
         } 

         $filename = $file."_".date("Y-m-d_H-i",time()); 
         header("Content-type: application/vnd.ms-excel"); 
         header("Content-disposition: csv" . date("Y-m-d") . ".csv"); 
         header("Content-disposition: filename=".$filename.".csv"); 
         header("Pragma: no-cache"); 
         header("Expires: 0"); 
         print $csv_output; 
         exit; 
関連する問題