2011-08-18 3 views
3

これは本当にシンプルでなければなりません...こことphp.netの例を見て、私はmysqlクエリーからレコードを取得し、csvフォーマットに変換してこのデータを私が作成したプログラムで使う変数。私は一時的なファイルを作成せずにこれを達成したいと思います。fputcsvは配列から1行だけ返す

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', 
     '[email protected]', 
     '123456789', 
     '123 Lane', 
     '123 Lane', 
     'no comment' 
    ); 



    $order_data[] = array(
     '2', 
     '[email protected]', 
     '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形式での)最初の配列ではなく、他の人を取得します。助言がありますか?ありがとう

+0

「$ order_data」を使用していないのはなぜですか? – cwallenpoole

+0

どのように?私は任意のアイデアを公開しています...実際に複数のクエリのデータを結合し、ダウンロード可能なCSVにエクスポートする必要があります。 (上記の例のヘッダーは除外しています) –

答えて

4

fgets()の代わりにstream_get_contents()を使用してください。後者は1行しか取り出さないためです。

$export_data = stream_get_contents($outstream); 
+0

ああ、そうです。どうもありがとうございました。 –

関連する問題