PHP Export to CSV


PHP Export to CSV

可能重复:
PHP将Excel导出到特定路径?

我不太熟悉PHP导出到excel或csv,但我使用PHP MySQL作为本地销售点。根据下面的代码,这实际上是有效的。。但这并不是它应该有的样子!所有记录都作为一行放在csv文件中,我该如何修复?此外,我该如何停止覆盖同一个文件。。。我的意思是,当我点击按钮导出csv时,它应该检查是否有现有的csv文件,如果有——创建新的!

谢谢

require_once('connect_db.php');
$items_array = array();
$result = mysql_query("SELECT * FROM sold_items");
while($row = mysql_fetch_array($result))
{
    $items_array[] = $row['item_no'];
    $items_array[] = $row['qty'];
}
$f = fopen('C:/mycsv.csv', 'w');
fputcsv($f, $items_array);
fclose($f);

fputcsv似乎只写入一行/记录,并且在其输出中包含一个行/记录终止符。您需要为报告的每一行调用fputcsv。

dbf的顺序文件命名解决方案在许多情况下都能很好地工作。就我个人而言,我发现添加时间戳很有帮助,因为当存在现有文件的集合时,它需要更少的IO。此外,即使在报告被修改/复制/触摸的情况下,也可以在不必打开每个报告的情况下知道报告的来源。

次要细节:将查询调整为仅使用的列。

<?php
require_once('connect_db.php');
$result = mysql_query("SELECT item_no, qty FROM sold_items");
$timestamp = date('Ymd-His'); 
$f = fopen("C:/mycsv-{$timestamp}.csv", 'w');
// Headers    
fputcsv($f, array('Item No', 'Qty'));
while($row = mysql_fetch_row($result))
{
    fputcsv($f, $row);
}
fclose($f);

首先是

$items_array[] = array($row['item_no'], $row['qty']);

其次,使用一个变量来存储文件名。

$filename = $name = "myscsv";
$index = 1;
while(file_exists($filename.".csv")) {
  $filename = $name.$index;
  $index++;
}

现在您可以保存它;)

$f = fopen("C:/{$filename}.csv", 'w');