Ввод массива в CSV с помощью fputcsv

У меня есть довольно много полей в моих таблицах, которые я сериализовал, чтобы уменьшить количество полей. Для всего остального, что работает отлично, так как хранит данные, и при необходимости я могу использовать в качестве примера следующее:

$dateofbirth = unserialize($row['dateofbirth']);
$dobday = $dateofbirth[0];
$dobmonth = $dateofbirth[1];
$dobyear = $dateofbirth[2];

Дата рождения хранится как dd,mm,yyyy и для всего остального я могу назвать это нормально. Моя проблема в том, что я пытаюсь использовать fputcsv для создания CSV-файла, используя следующее:

$result = mysqli_query($con, 'SELECT u.user_id, b.dateofbirth FROM Users u INNER JOIN Basic b USING (user_id) ORDER BY user_id DESC');

$fp = fopen('latest.csv', 'w');

fputcsv($fp, array('User ID', 'DOB' )); 

CSV генерируется, но для столбца даты рождения в CSV он выводится как "*a:3:{i:0;s:2:"03";i:1;s:2:"02";i:2;s:4:"1986";}*", потому что он, очевидно, все еще сериализован. Каков мой лучший и/или самый простой способ обработки этих полей?

Спасибо заранее.


person BN83    schedule 21.01.2015    source источник
comment
Уже ответили на stackoverflow.com/questions/28019566/   -  person Sunil Pachlangia    schedule 21.01.2015
comment
@SunilPachlangia, насколько я понимаю по этому вопросу, у них все значения в 1 столбце. У меня есть несколько столбцов, некоторые из которых являются массивами, а некоторые нет.   -  person BN83    schedule 21.01.2015


Ответы (1)


Вы можете попробовать это:

header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-type: text/csv");
header("Content-Disposition: attachment; filename=latest.csv");// Disable caching
header("Cache-Control: no-cache, no-store, must-revalidate"); // HTTP 1.1
header("Pragma: no-cache"); // HTTP 1.0
header("Expires: 0"); // Proxies

$fp = fopen('latest.csv', 'w');

while($row = mysqli_fetch_array($result)){

fputcsv($fp,array($row[0],$row[1]));
}

// или вы можете использовать без заголовков, упомянутых выше

или установите некоторый формат даты рождения, например:

$rowdob = date("M d, Y - g:i:s A", strtotime( $row[0] ) );

в цикле while и передать $rowdob в fputcsv();

person Cruzer    schedule 21.01.2015