2012-09-22 5 views
2

데이터를 MySQL 데이터베이스에 쓰는 폼이 있습니다. 최종 제출 후 사용자가 CSV 형식으로 데이터를 다운로드 할 수있게하려고합니다.브라우저를 통해 PDO를 사용하여 CSV로 MySQL 테이블의 데이터 저장

내 코드는 현재 데이터베이스 내용을 브라우저에 덤프하고 있습니다. 즉, csv 파일이 아닌 페이지에 쓰여지고 있습니다. 링크로 보내고 파일을 다운로드 할 수있는 옵션을 제공하고 싶습니다.

$dbo = new PDO('mysql:host=localhost;dbname=db1', $username, $password); 
$sql = "SELECT * FROM table1"; 
$qry = $dbo->prepare($sql); 

// Execute the statement 
$qry->execute(); 
var_dump($qry->fetch(PDO::FETCH_ASSOC)); 
$data = fopen('/tmp/db_user_export_".time().".csv', 'w'); 
while ($row = $qry->fetch(PDO::FETCH_ASSOC)) 
{ 
    echo "Success"; 
    // Export every row to a file 
    fputcsv($data, $row); 
} 

현재의 결과는 테이블에서 모든 데이터의 덤프 페이지입니다 :

여기에 내 현재 코드입니다. 원하는 위치에 파일이 작성되지 않았습니다. 내가 어디로 잘못 가고 있니?

답변

2

클라이언트는 CSV 파일이라는 것을 모릅니다 (결국 텍스트 일뿐입니다).

봅니다 (스크립트의 상단에있는) 모든 출력하기 전에이 추가 :

header("Content-type: text/csv"); 
header("Content-Disposition: attachment; filename=file.csv"); 
header("Pragma: no-cache"); 
header("Expires: 0"); 

는 기본적으로, 데이터는 CSV 파일을 전송됩니다 클라이언트/브라우저를 말하는 것입니다.

그래야합니다.

당신이 헤더에 대한 자세한 정보를 찾을 수 있습니다 : 끝내 http://php.net/manual/en/function.header.php

+0

, 그것은 완벽하게 작동했다, 감사합니다! 밴쿠버에 살고 있다고 생각하지 마라. 내가 맥주 한잔 사 줄까? 나이를 알아 내려고 노력했습니다. – Gideon

관련 문제