2015-11-11 2 views
0

В настоящее время у меня есть запрос, который возвращает массив ниже. Когда я пытаюсь экспортировать данные в файл CSV, я вижу данные дважды (столбцы повторяются, а не строки). Может кто-то объясните, почему? (Я хочу, чтобы каждый записи показывают только один раз)PHP Export Array to CSV

Array 
(
    [0] => Array 
     (
      [0] => 6991 
      [id] => 6991 
      [1] => 8588 
      [work_num] => 8588 
      [2] => Test123 
      [name] => Test123 
      [3] => 1407154 
      [deployed] => 1407154 
      [4] => 2015-10-13 
      [created_date] => 2015-10-13 
     ) 
) 

Это код, который я использую, чтобы экспортировать данные

// create a file pointer connected to the output stream 
$output = fopen('php://output', 'w'); 

// output the column headings 
fputcsv($output, array('id','Work Number','Name','Deployed','Date')); 


$get_data = $CLASSNAME->FuntionName(Parameters); 

foreach($get_data as $data_row) { 
    fputcsv($output, $data_row); 
} 

fclose($output); 
+1

Данные поступают как результат запроса mysql. Почтовый код, который получает данные. –

ответ

2

Если вы используете MySQL, то замените mysql_fetch_array на mysql_fetch_row.

mysql_fetch_array возвращает результирующий набор как в числовом, так и в ассоциативном массиве. mysql_fetch_row вернет результирующий набор как только числовой массив.

1

Исправьте входящие данные (при использовании PDO, использовать PDO :: FETCH_ASSOC или PDO :: FETCH_NUM вместо PDO :: FETCH_BOTH, который по умолчанию) или назвать столбцы при вводе в формате CSV:

foreach($get_data as $data_row) { 
    fputcsv($output, array(
     $data_row['id'], 
     $data_row['work_num'], 
     $data_row['name'], 
     $data_row['deployed'], 
     $data_row['created_date'] 
    )); 
} 
+0

Мне пришлось сделать незначительные изменения .. $ data_row [$ i] ['id'] –