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), но не остальные. Какой-нибудь предложения? Спасибо

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