fputcsv возвращает только одну строку из массива
Это должно быть действительно просто... Следующие примеры здесь и php.net , Я пытаюсь получить записи из запроса mysql, преобразовать их в формат csv и присвоить эти данные переменной для использования в созданной мной программе. Я хотел бы сделать это без создания временных файлов.
public function export3() {
$order_data = array();
$order_data[] = array(
'order_id',
'email',
'telephone',
'shipping_address',
'payment_address',
'comment'
);
// Mysql returns data and is assigned to this array in the following format
$order_data[] = array(
'1',
'blank@blank',
'123456789',
'123 Lane',
'123 Lane',
'no comment'
);
$order_data[] = array(
'2',
'blank3@blank3',
'987654321',
'321 Lane',
'321 Lane',
'no comment'
);
$outstream = fopen("php://temp", 'r+');
foreach($order_data as $csv_data) {
fputcsv($outstream, $csv_data);
}
rewind($outstream);
$export_data = fgets($outstream);
fclose($outstream);
$response->output($export_data);
}
К сожалению, я иногда получаю жалобы на преобразование "массив в строку", но даже без каких-либо ошибок я получаю только первый массив (в формате csv), но не остальные. Какой-нибудь предложения? Спасибо
3
Author: Rocket Hazmat, 2011-08-18
1 answers
Использовать stream_get_contents()
вместо fgets()
, так как последний извлекает только одну строку.
$export_data = stream_get_contents($outstream);
4
Author: salathe, 2011-08-18 17:43:53