2012-07-25 22 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 2012-07-25 22:45:19

+0

我沒有得到結果@全部 – CodeMonkey 2012-07-25 22:47:01

回答

2

我相信換行字符必須是雙引號。

$resultSet .= "\n"; 

可能只是因爲長度原因而忽略了代碼,但請確保您在foreach之後回顯$ resultSet。

+0

是的,雙引號之間的轉義序列將被解釋爲特殊字符 – bitfox 2012-07-25 23:00:20

1

如果你想下載的文件爲CSV,那麼你將包括下列頭

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

然後你會使用類似以下的CSV部分:

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"; 
} 

但如果你只是想創建一個文件,你會使用像下面這樣的東西:

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

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

fclose($fp);