如何使用mysql_fetch_array / mysql_fetch_row结果创建一个csv文件,其中每行记录为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;
}
答案 0 :(得分:2)
我认为换行符必须是双引号。
$resultSet .= "\n";
由于长度原因,可能只是从代码中省略了,但请确保在foreach之后回显$ resultSet。
答案 1 :(得分: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);
答案 2 :(得分:0)
这是一个很好的资源:http://www.codehive.net/PHP-Array-to-CSV-1.html
用法:
$csv_data = array_to_scv($array, false);
print_r($csv_data);