思路描述: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格式。如下图
2、第二步上传文件并保存到本地,循环输出数据到mysql
$zt=$this->yueMember_model->ImportExcel($_FILES['file']['tmp_name']); 这是我的文件处理模块,通过调用模型yueMember_model里面的方法ImportExcel 把文件的临时文件名传过去。ImportExcel方法如下图所示。
$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语句即可。希望我的分享给大家带来帮助。