3

这一定很简单......按照here和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 格式),而没有得到其他数组。有什么建议么?谢谢

4

1 回答 1

4

使用stream_get_contents()代替fgets(),因为后者只获取一行。

$export_data = stream_get_contents($outstream);
于 2011-08-18T17:43:53.947 回答