2012-07-25 4 views
0

mysql_fetch_array/mysql_fetch_row 결과를 사용하여 각 행 레코드가 csv이고 다음 레코드가 새 행에있는 csv 파일을 만드는 방법은 무엇입니까?MySQL의 결과 집합을 CSV 문자열로 생성

$query = "SELECT * FROM myTable DESC LIMIT 10"; 

$result = mysql_query($query, $conn); 
$resultRows = mysql_num_rows($result); 

if($resultRows < 1) { 
    return array('query' => $query, 'NumberOfRows' => $resultRows, 'status' => 'failure'); 
}; 

$rowResult = mysql_fetch_array($result); 
//var_dump($rowResult);exit; 
foreach($rowResult as $row){ 

    $resultSet = $row['firstname']; 
    $resultSet .= ',' . $row['lastname']; 
    $resultSet .= ',' . $row['email']; 
    $resultSet .= ',' . $row['phone']; 
    $resultSet .= ',' . ($row['address1']); 
    $resultSet .= '\n'; 
    //var_dump($resultSet);exit; 
} 
+1

그래서, 어떤 오류가 당신이 거기에 도착 않았다 다시 좋은 자원이다? – Alfabravo

+0

결과가 모두 @가 아님 – CodeMonkey

답변

2

나는 개행 문자는 따옴표에 있어야합니다 생각 :

나는이 시도했다.
$resultSet .= "\n"; 

은 아마 단지 길이 이유로 코드에서 생략하지만, 당신이 foreach는 후 $ 결과 집합을 반향하고 있는지 확인합니다.

echo "FirstName,LastName,Email,Phone,Address\r\n"; //header 
while($row = mysql_fetch_array($result)){ 
    echo "\"$row[firstname]\",\"$row[lastname]\",\"$row[email]\",\"$row[phone]\",\"$row[address]\"\r\n"; 
} 

을하지만 경우 :

+0

예, 큰 따옴표 사이의 이스케이프 시퀀스는 특수 문자로 해석됩니다 – bitfox

1

당신은 파일이 다음 다음 헤더는 다음과 같은 것을 사용하는 것과 CSV 섹션 다음

header("Content-type: application/x-msdownload"); 
header("Content-Disposition: attachment; filename=extraction.csv"); 
header("Pragma: no-cache"); 
header("Expires: 0"); 

을 포함 할 것 CSV로 다운로드하려면 다음과 같이 사용할 파일을 만들고 싶었습니다.

$fp = fopen('file.csv', 'w'); 

while($row = mysql_fetch_array($result)){ 
    fputcsv($fp, $row); 
} 

fclose($fp); 
관련 문제