//连接数据库
@$link = mysql_connect("localhost","appsf007","b2h#jz!K");
//链接数据库不成功,抛出错误
if(!$link){
die('Could not connect: ' . mysql_error());
}
//选择数据库
mysql_select_db("appsf007", $link);
//设置字符集为utf-8
mysql_query("set names 'utf8'");
//设置脚本最大执行时间(默认为30秒)
set_time_limit(100);
//设置时区为中国
date_default_timezone_set("PRC");
//屏蔽Notice错误
//$order = M('order');
$ks_time = I('ks_time');
$js_time = I('js_time');
//输出Excel文件头,可把user.csv换成你要的文件名
// 从数据库中获取数据,为了节省内存,不要把数据一次性读到内存,从句柄中一行一行读即可
if($ks_time && $js_time){
// $sql = "select * from al_order where addtime between '{$ks_time}' and 2100-1-1";
$sql = "SELECT order_id,order_num,user_name,mobile,order_name,order_type,order_zhifubao,f_order_time,s_order_time,order_amount,state FROM nv_order WHERE f_order_time BETWEEN '{$ks_time}' AND '{$js_time}'";
// echo $sql;
}else if($ks_time){
$sql = "SELECT order_id,order_num,user_name,mobile,order_name,order_type,order_zhifubao,f_order_time,s_order_time,order_amount,state FROM nv_order WHERE f_order_time BETWEEN '{$ks_time}' AND '2100-01-01'";
// echo $sql;
}else{
$sql = "SELECT order_id,order_num,user_name,mobile,order_name,order_type,order_zhifubao,f_order_time,s_order_time,order_amount,state FROM nv_order WHERE 1 = 1";
//echo $sql;
}
$is = mysql_query($sql);
$row_row = mysql_fetch_assoc($is);
if(!$row_row){
$this->error('没有数据');
}
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="order.csv"');
header('Cache-Control: max-age=0');
// 打开PHP文件句柄,php://output 表示直接输出到浏览器
$fp = fopen('php://output', 'a');
// 输出Excel列名信息
$head = array('序号','订单号','昵称','手机号','订单名称','支付方式','支付宝交易号','交易起始时间','交易结束时间','充值金额','是否交易成功');
foreach ($head as $i => $v) {
// CSV的Excel支持GBK编码,一定要转换,否则乱码
$head[$i] = iconv('utf-8', 'gbk', $v);
}
// 将数据通过fputcsv写到文件句柄
fputcsv($fp, $head);
// 计数器
$cnt = 0;
$num = 0;
// 每隔$limit行,刷新一下输出buffer,不要太大,也不要太小
$limit = 100000;
// //逐行取出数据,不浪费内存
$query = mysql_query($sql);
while ($row = mysql_fetch_assoc($query)) {
$cnt ++;
if ($limit == $cnt) { //刷新一下输出buffer,防止由于数据过多造成问题
ob_flush();
flush();
$cnt = 0;
}
if($row['type'] != 693){ //693是推荐表删除的数据
$num ++;
$row['order_id'] = $num; /// 把order_id变成排序
$row['order_amount'] = '¥'.$row['order_amount'];
$row['order_zhifubao'] = '‘'.$row['order_zhifubao'];
if($row["state"] == 1){
$row["state"] = '交易成功';
}else{
$row["state"] = '交易失败';
}
unset($row['type']); //不要删除
$new_row = $this->toIndexArr($row);
}
foreach ($new_row as $i => $v) {
$new_row[$i] = iconv('utf-8', 'gbk', $v);
}
fputcsv($fp, $new_row);
}
}
//关联变索引数组 不要删除
function toIndexArr($arr){
$i=0;
foreach($arr as $key => $value){
$newArr[$i] = $value;
$i++;
}
return $newArr;
}