2013-01-24 5 views
0

내가 CSV에 수출하는 적절한 방법에 대해 포스팅을 많이보고, 대부분의 개발자들이 내가 아래 스크립트가 fputcsv를 사용하여 변환 할 방법 fputcsv()PHP - CSV 체인지업

를 사용하는 것이 좋습니다 수출 MySQL의 쿼리? 테이블 열 이름을 반영하는 헤더 행을 내보내는 중입니다. 계속 유지하고 싶습니다.

<?php 

    $sql = "SELECT * FROM `tbl_customers`"; 
    $result = mysql_query($sql, $dbdata_conn) or die(mysql_error()); 


    $header = $csv_output = ''; 
    $fields = mysql_num_fields($result); 
    for ($i = 0; $i < $fields; $i++) { 
     $header .= mysql_field_name($result, $i) . ","; 
    } 
    $header .= "\n"; 

    while ($rowr = mysql_fetch_row($result)) { 
     for ($j=0; $j<$i; $j++) { 
     $csv_output .= $rowr[$j].", "; 
      } 
    $csv_output .= "\n"; 
    } 

    $csv_output = $header.$csv_output; 

    header("Content-type: text/x-csv"); 
    header("Content-Disposition: attachment; filename=test.csv"); 
    header("Pragma: no-cache"); 
    header("Expires: 0"); 
    print "$csv_output"; 
    exit; 

?> 

저는 mysql_query이 사용되지 않기 때문에 이것은 실제 사용을위한 것입니다.

부수적으로 저는 fputcsv에 익숙하지 않지만, csv 출력을 위해 데이터를 포맷하는 데 유용하므로 모든 탈출구 등으로 시간을 절약 할 수 있습니다. (나는 또한 위의 무엇 개선에 아주 아주 열려있어)

+0

[출력 파일로 선택 ?] (http://dev.mysql.com/doc/refman/5.0/en/select-into.html) –

+0

[이 예] (http://php.net/manual/en/function)를 사용할 수 있습니다. fputcsv.php) 내가하려고 한 일을하는 것 –

답변

1
(당신의 mysql_* 기능 다음)

간단한 데모 : 당신이 작동해야하므로

당신이 언급 한 것처럼
$header=array(); 
$fields = mysql_num_fields($result); 
for ($i = 0; $i < $fields; $i++) { 
    $header[] = mysql_field_name($result, $i); 
} 
header("..."); 
$f=fopen("php://output","wt"); 
fputcsv($f,$header); 
while ($row = mysql_fetch_row($result)) { 
    fputcsv($f,$row); 
} 
fclose($f); 

mysql_* 기능, 사용되지 않습니다 그것도. 당신이 첨부 파일로 다운로드하려면

0

, 그것은 fputcsv()를 사용하지 OK,하지만 당신이 그것을 사용하려는 경우, 여기에 해결 방법입니다 : 당신이 사용하고자하는 해달라고

$sql = "SELECT * FROM `tbl_customers`"; 
$result = mysql_query($sql, $dbdata_conn) or die(mysql_error()); 

$header = array(); 
$csv_output = array(); 
$fields = mysql_num_fields($result); 
for ($i = 0; $i < $fields; $i++) { 
    $header[] = mysql_field_name($result, $i); 
} 
$csv_output[] = $header; 

while ($rowr = mysql_fetch_array($result)) { 
    $csv_output[] = $rowr; 
} 

$fp = fopen('/path/to/file.csv', 'w'); 
foreach ($csv_output as $line) { 
    fputcsv($fp, $line); 
} 
fclose($fp);  

// if you pick up the file from the directory manually, the following is not needed 
header("Content-type: text/x-csv"); 
header("Content-Disposition: attachment; filename=test.csv"); 
header("Pragma: no-cache"); 
header("Expires: 0"); 

print file_get_contents('/path/to/file.csv'); 
unlink('/path/to/file.csv'); 
exit;