使用foreach函数将CSV导出到文件夹

时间:2016-09-12 17:20:40

标签: php mysql csv

我有一个php脚本,我想用它来自动将某个mysql表中的数据导出到目录中的CSV文件。该脚本运行正常,文件保存在正确的目录中,但是您希望每个订单都导出到单独的CSV文件。

像:

  • 12-09-2016-05-21_csvexport_1.CSV<来自订单1的数据
  • 12-09-2016-05-21_csvexport_2.CSV<来自订单2的数据
  • 依旧......

我想用cronjob自动运行脚本。可以使用日期范围选择要作为单独的csv文件导出的订单。比如只创建过去2天的csv文件。 CSV文件是否会被覆盖并不重要。 订单表如下所示:

id_order    date        customer
1       01-01-2016  1223
2       01-02-2016  1224
3       01-03-2016  1225
4       01-04-2016  1226
5       01-05-2016  1227

php脚本看起来像这样:

<?php
error_reporting(E_ALL ^ E_DEPRECATED);
$host = 'localhost';
$user = 'user';
$pass = 'pass';
$db = 'database';
$table = 'columns';
$file = 'csvexport';
$dir = 'csv';

$link = mysql_connect($host, $user, $pass) or die("Can not connect." . mysql_error());
mysql_select_db($db) or die("Can not connect.");	

function escape_csv_value($value) { 
$value = str_replace('"', '""', $value);
if ( preg_match( '/\\r|\\n|,|"/', $value ) ) {
return '"' . str_replace( '"', '""', $value ) . '"';
} else { 
return $value;
} 
} 

$result = mysql_query("SHOW COLUMNS FROM ".$table."");
$i = 0;
if (mysql_num_rows($result) > 0) {
while ($row = mysql_fetch_assoc($result)) {
$csv_output .= $row['Field']."; ";
$i++;
}
}
	
$values = mysql_query("SELECT id_order, date, customer FROM orders");
while ($rowr = mysql_fetch_row($values)) {
for ($j=0;$j<$i;$j++) {
$csv_output .= escape_csv_value($rowr[$j]).';'; 
}
$csv_output .= "\n";
}
	
header("Content-type: application/vnd.ms-excel");
header("Content-disposition: csv" . date("Y-m-d") . ".csv");
header( "Content-disposition: attachment; filename=".$filename.".csv"); 

$filename = date("d-m-Y-i-s_", time()) . $file.".csv";

print $csv_output;
	file_put_contents($dir ."/".$filename, $csv_output);
}
?>

我希望有人可以帮助我。提前谢谢。

0 个答案:

没有答案