2012-07-25 59 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);