PHP导出和导出CSV文件的详细解释

我们首先准备MySQL数据表,假设有一个记录学生信息的表学生,以及ID、姓名、性别和年龄记录学生的姓名、性别、年龄和其他信息。

复制代码代码如下所示:

创建表(学生)

` ID ` int(11)不为空auto_increment,

`名字` varchar(50)不为空,

`性` varchar(10)不为空,

`年龄` SmallInt(3)不为空的默认'0',

主键(id)

)= MyISAM引擎默认的字符集utf8;



我们还需要一个HTML交互页面来放置导入表单和导出按钮。

复制代码代码如下所示:



请选择要导入的CSV文件:<输入类型提交

类=按钮value=csv>

<输入type=按钮class=按钮value=导出CSVonclick=窗口位置。href =do.php

操作=导出>





在选择当地的CSV文件,单击导入,将它做的。phpaction =进口加工,并单击导出按钮,然后请求地址做。phpaction =出口出口数据。

1。csv

do.php需要处理进出口根据得到的参数的过程,和PHP的结构如下:

复制代码代码如下所示:

include_once(连接。PHP); / /数据库连接

行动=美元_get美元{ 'action};

如果($行动= = 'import / /)为CSV

{

进口/待遇

} elseif($行动= = 'export ')/导出CSV

{

导出处理

}



导入CSV进程:检查CSV文件(被忽略的合法性)读取并解析在字段周期中打开的CSV文件>字段值>批量添加到数据表中,完成。

复制代码代码如下所示:

如果($行动= = 'import){ / /成CSV

文件名=美元美元_files { } { } 'tmp_name '文件';

如果(emptyempty($文件名))

{

请选择您要导入的CSV文件!;

出口;

}

为处理= fopen($文件名,R');

结果= input_csv美元($处理); / / CSV

len_result美元=计数($结果);

如果($ len_result = = 0)

{

没有数据!;

出口;

}

为($我= 1;$我<< len_result美元; / / $ i++)循环获取字段值

{

$name = iconv('gb2312 ','utf-8,$结果{ $我} { 0 }); / /中文转码

性别= iconv('gb2312美元,美元'utf-8 ',结果{ $我} { 1 });

年龄=结果$ { 2 } };

data_values美元=($名','性'的美元,美元的时代),;

}

data_values美元= substr(data_values美元,0,1); / /删除最后一个逗号

Fclose($处理 / /关闭);指针

查询= mysql_query美元(插入学生(姓名、性别、年龄)值data_values美元); / /批量插入数据表

如果($查询)

{

导入成功!;

其他{ }

回波导入失败!;

}

}



需要注意的是,PHP fgetcsv函数可以很容易地处理CSV文件,使用这个函数从文件指针中读取一行并解析CSV字段。以下函数解析CSV文件字段和数组的形式返回。

复制代码代码如下所示:

功能input_csv($处理)

{

($ =数组);

$ = 0;

而($data = fgetcsv(合处理,10000))

{

$ =计数($ data);

($ i = 0;$ i;

{

$;

}

美元+;

}

退回美元;

}



此外,在导入数据库时,我们使用批插入而不是插入一个bar。因此,在构建SQL语句时,我们需要稍微处理它并查看代码。

2。导出CSV

我们知道,CSV文件是一个由逗号分隔的纯文本文件,你可以用Excel打开它,,XLS相同。

CSV导出处理过程:学生信息表记录字段信息构建周期>逗号分隔的集标头信息>导出文件(下载)到本地

复制代码代码如下所示:



} elseif($行动= = 'export ')/导出CSV

{

结果= mysql_query美元(SELECT * FROM学生订单ID ASC );

姓名,性别,年龄;

$str = iconv('utf-8 ','gb2312,$str);

而($行= mysql_fetch_array($结果))

{

$name = iconv('utf-8 ','gb2312 ',$行{ 'name' }); / /中文转码

合性= iconv('utf-8 ','gb2312 ',' } { $行'sex);

$ $ - $名称。

}

为文件名=日期('ymd。.csv); / /设置文件名

export_csv($文件名,$str); / /出口

}



要将数据导出到本地,需要修改标头信息。代码如下:

复制代码代码如下所示:

功能export_csv($文件名,$数据)

{

页眉(内容类型:文本);

标题(内容配置:附件;文件名);

头('cache-control:must-revalidate,后检查= 0,预先检查= 0);

头('expires:0);

头('pragma:公众);

回波数据;

}



注意进出口过程中,因为我们是统一采用UTF-8编码,我们必须记住转码的汉字,否则,我们可能会有中文乱码情况。

好了,这篇文章在这里解释,我也会有一篇文章来介绍PHP和mysql的导入和导出excel,以及XML的导入和导出,请大家注意它。