【php】CodeIgniter上传xml文件批量添加数据到mysql数据库

思路描述:CodeIgniter同时添加多条数据到数据库,框架自身提供了如下方法。

$this->db->insert_batch()

该方法根据你提供的数据生成一条 INSERT 语句并执行,它的参数是一个**数组** 或一个**对象**,下面是使用数组的例子:

$data=array(

array('title'=>'My title','name'=>'My Name','date'=>'My date'),

array('title'=>'Another title','name'=>'Another Name','date'=>'Another date'));

$this->db->insert_batch('mytable',$data);

// Produces: INSERT INTO mytable (title, name, date) VALUES ('My title', 'My name', 'My date'),  ('Another title', 'Another name', 'Another date')

第一个参数为要插入的表名,第二个参数为要插入的数据,是个二维数组。【到此是ci框架提供的数据库操作方法】

====================================================================

本文介绍的是通过input=>file 上传控件上传xml文件,读取文件结果集,批量添加到mysql,手动添加多条就更简单了。不做说明了。

1、第一步先确定自己的xml格式。如下图


【php】CodeIgniter上传xml文件批量添加数据到mysql数据库_第1张图片

2、第二步上传文件并保存到本地,循环输出数据到mysql

这个图是我上传xml文件的表单


【php】CodeIgniter上传xml文件批量添加数据到mysql数据库_第2张图片
这个图是文件上传格式判断和返回值处理

$zt=$this->yueMember_model->ImportExcel($_FILES['file']['tmp_name']); 这是我的文件处理模块,通过调用模型yueMember_model里面的方法ImportExcel  把文件的临时文件名传过去。ImportExcel方法如下图所示。


【php】CodeIgniter上传xml文件批量添加数据到mysql数据库_第3张图片
这里是上传的xml文件保存到本地或服务器,然后读取xml文件遍历通过foreach遍历数据到$item数组


$this->db->insert_batch('yue_member', $memberArry);这句是CI提供的批量插入数据的方法,我们做的就是把数组遍历为数组格式【$memberArry】以数组的方式传给insert_batch这个方法。难点就是遍历xml数据转换为二维数组格式。

========================下面解释下遍历xml和循环拼凑数组=====================

if (file_exists($file_name)) //file_name看图片了解下是说明名称,此处就是获得上传成功的文件路径和地址,当文件存在执行读取xml文件

{

$xml_array = simplexml_load_file($file_name); //读取xml文件开始了。

$memberArry=array();//定义空数组用于下面赋值。

foreach($xml_array AS $a => $member)   遍历读取的xml数据

{

$item =  array(

'openid' => $member->title,

'nickname' => $member->author,

'headimgurl' =>  $member->description

); //item就是一个一维数组很明显能看出来,把遍历的子节点分别赋值给数组的不同字段。

$memberArry[]=  $item;//memberArry开始定义的空数组,在循环内每次把一维数组item赋值给这个数组。

}

//自己可以通过var_demp($memberArray)来打印出这个二维数组看看格式,对存入数据库更有帮助

$this->db->insert_batch('yue_member', $memberArry);  //执行批量插入操作了

}

else

{

return "error";

}

====================总结===================

我这里是根据CodeIgniter框架提供的批量插入数据库的方法来进行插入的,其他框架或原生php之间拼接sql语句即可。

如:// Produces: INSERT INTO mytable (title, name, date) VALUES ('My title', 'My name', 'My date'),  ('Another title', 'Another name', 'Another date')

所以自己灵活的根据自己的框架来拼接sql语句即可。希望我的分享给大家带来帮助。

你可能感兴趣的:(【php】CodeIgniter上传xml文件批量添加数据到mysql数据库)