0

我如何使用 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;
}
4

3 回答 3

2

我相信换行符必须用双引号引起来。

$resultSet .= "\n";

由于长度原因,可能只是从代码中省略了,但请确保您在 foreach 之后回显 $resultSet。

于 2012-07-25T22:47:04.093 回答
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);
于 2012-07-25T22:55:40.337 回答
0

这是一个很好的资源: http: //www.codehive.net/PHP-Array-to-CSV-1.html

用法:

$csv_data = array_to_scv($array, false);
print_r($csv_data);
于 2012-07-25T22:56:03.730 回答