我使用 php 从我的站点导出 csv 文件,只能得到大约 8k 代码。但是当我使用相同的 php 脚本从本地测试站点导出 csv 时,我可以获得完整的代码,大约 500k。我确信站点中的数据库与我本地的 pc 测试数据库相同。
function export(){
ini_set ('memory_limit', '32M');
$this->db->execute('set names utf8');
$result=$this->db->execute($this->query_sql);
$csv_code='';
$keys_line='';
if($result->recordCount()>0){
while(!$result->EOF){
$v=$result->fields;
// 标题行
if($keys_line==''){
foreach($v as $k1=>$v1){
$keys_arr[]=$k1;
}
$keys_line=implode(',',$keys_arr);
$csv_code.=$keys_line;
}
// 内容行
$values_arr=array();
foreach($v as $k1=>$v1){
$str=preg_replace("@\s+@"," ",$v1); //替换换行
$str=preg_replace("@\"@","\"\"",$v1); //scv中需要将单个双引号转换成2个双引号
$str='"'.$str.'"'; // 用双引号括起来每个值
$values_arr[]=$str;
}
$values_line=implode(',',$values_arr);
$csv_code.="\n".$values_line;
$result->MoveNext();
}
}
$filename = $this->csv_name.".csv";//文件名
header("Content-type:text/csv");
header("Content-Disposition:attachment;filename=".$filename);
header('Cache-Control:must-revalidate,post-check=0,pre-check=0');
header('Expires:0');
header('Pragma:public');
$csv_code=iconv('UTF-8','GB2312//IGNORE',$csv_code); //转码成gbk
$csv_code=trim($csv_code);
echo $csv_code;
exit;
}
如果我删除这些代码,我可以在页面中获取所有数据代码,为什么?
// $filename = $this->csv_name.".csv";//文件名
// header("Content-type:text/csv");
// header("Content-Disposition:attachment;filename=".$filename);
// header('Cache-Control:must-revalidate,post-check=0,pre-check=0');
// header('Expires:0');
// header('Pragma:public');
// $csv_code=iconv('UTF-8','GB2312//IGNORE',$csv_code); //转码成gbk
// $csv_code=trim($csv_code);