PHP导出csv文件,数据不全

Dcyer1997 2017-07-11 03:30:35

set_time_limit(0);
header ( "Content-type:application/vnd.ms-excel" );
header ( "Content-Disposition:filename=" . iconv ( "UTF-8", "GB18030", "会员列表" ) . ".csv" );
// 打开PHP文件句柄,php://output 表示直接输出到浏览器
$fp = fopen('php://output', 'a');
// 设置表格头标题
$head_title = array('id', '账号', '用户名称', '状态', '最后登录时间', '注册时间');
// 将中文标题转换编码,否则乱码
foreach ($head_title as $i => $v) {
$head_title[$i] = iconv('utf-8', 'GB18030', $v);
}
// 将标题名称通过fputcsv写到文件句柄
fputcsv($fp, $head_title);
// 统计导出的总数
$total_export_count = $user->count();
// limit
$pre_count = 10000;
for ($i=1;$i<=ceil($total_export_count/$pre_count);$i++){
$export_data = $user->where($where)->order('create_time DESC')->limit(strval(($i-1)*$pre_count), $pre_count)->select();
foreach ( $export_data as $v ) {
$rows = array();
$rows[] = iconv('utf-8', 'GB18030', $v['id'] . "\t");
$rows[] = iconv('utf-8', 'GB18030', $v['mobile'] . "\t");
$rows[] = iconv('utf-8', 'GB18030', $v['username'] . "\t");
$rows[] = iconv('utf-8', 'GB18030', $v['sum_alleat_reel'] . "\t");
$rows[] = iconv('utf-8', 'GB18030', $v['alleat_reel'] . "\t");
$rows[] = iconv('utf-8', 'GB18030', $v['give_alleat_reel'] . "\t");

if($v['status'] == 1){
$rows[] = iconv('utf-8', 'GB18030', '正常' . "\t");
} else {
$rows[] = iconv('utf-8', 'GB18030', '黑名单' . "\t");
}
$rows[] = date('Y-m-d H:i:s',$v["last_login_time"] . "\t\n");
$rows[] = date('Y-m-d H:i:s',$v["create_time"] . "\t\n");

fputcsv($fp, $rows);
}

// 将已经写到csv中的数据存储变量销毁,释放内存占用
unset($export_data);
ob_flush();
flush();
}

exit ();

...全文
370 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_42514200 2021-01-25
  • 打赏
  • 举报
回复
你好,你这个问题解决了吗?我也遇到到同样的问题
傲雪星枫 2017-07-12
  • 打赏
  • 举报
回复
导出的数据源是一样的么? 如果不是,可以检查导出后那条记录的后一条,看看有什么不同。 另外,可以分批导出再合拼,正式环境估计有些进程监控的,会处理长驻的进程。
Dcyer1997 2017-07-11
  • 打赏
  • 举报
回复
自己测试可以导出50多万的数据,但是放在正式环境,就导不全了,才导10几万就完了。

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧