思路描述:CodeIgniter同時(shí)添加多條數(shù)據(jù)到數(shù)據(jù)庫,框架自身提供了如下方法。
$this->db->insert_batch()
該方法根據(jù)你提供的數(shù)據(jù)生成一條 INSERT 語句并執(zhí)行,它的參數(shù)是一個(gè)**數(shù)組** 或一個(gè)**對象**,下面是使用數(shù)組的例子:
$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')
第一個(gè)參數(shù)為要插入的表名,第二個(gè)參數(shù)為要插入的數(shù)據(jù),是個(gè)二維數(shù)組?!镜酱耸莄i框架提供的數(shù)據(jù)庫操作方法】
====================================================================
本文介紹的是通過input=>file 上傳控件上傳xml文件,讀取文件結(jié)果集,批量添加到mysql,手動(dòng)添加多條就更簡單了。不做說明了。
1、第一步先確定自己的xml格式。如下圖

2、第二步上傳文件并保存到本地,循環(huán)輸出數(shù)據(jù)到mysql


$zt=$this->yueMember_model->ImportExcel($_FILES['file']['tmp_name']); 這是我的文件處理模塊,通過調(diào)用模型yueMember_model里面的方法ImportExcel? 把文件的臨時(shí)文件名傳過去。ImportExcel方法如下圖所示。

$this->db->insert_batch('yue_member', $memberArry);這句是CI提供的批量插入數(shù)據(jù)的方法,我們做的就是把數(shù)組遍歷為數(shù)組格式【$memberArry】以數(shù)組的方式傳給insert_batch這個(gè)方法。難點(diǎn)就是遍歷xml數(shù)據(jù)轉(zhuǎn)換為二維數(shù)組格式。
========================下面解釋下遍歷xml和循環(huán)拼湊數(shù)組=====================
if (file_exists($file_name)) //file_name看圖片了解下是說明名稱,此處就是獲得上傳成功的文件路徑和地址,當(dāng)文件存在執(zhí)行讀取xml文件
{
$xml_array = simplexml_load_file($file_name); //讀取xml文件開始了。
$memberArry=array();//定義空數(shù)組用于下面賦值。
foreach($xml_array AS $a => $member) ? 遍歷讀取的xml數(shù)據(jù)
{
$item =? array(
'openid' => $member->title,
'nickname' => $member->author,
'headimgurl' =>? $member->description
); //item就是一個(gè)一維數(shù)組很明顯能看出來,把遍歷的子節(jié)點(diǎn)分別賦值給數(shù)組的不同字段。
$memberArry[]=? $item;//memberArry開始定義的空數(shù)組,在循環(huán)內(nèi)每次把一維數(shù)組item賦值給這個(gè)數(shù)組。
}
//自己可以通過var_demp($memberArray)來打印出這個(gè)二維數(shù)組看看格式,對存入數(shù)據(jù)庫更有幫助
$this->db->insert_batch('yue_member', $memberArry); ?//執(zhí)行批量插入操作了
}
else
{
return "error";
}
====================總結(jié)===================
我這里是根據(jù)CodeIgniter框架提供的批量插入數(shù)據(jù)庫的方法來進(jìn)行插入的,其他框架或原生php之間拼接sql語句即可。
如:// Produces: INSERT INTO mytable (title, name, date) VALUES ('My title', 'My name', 'My date'),? ('Another title', 'Another name', 'Another date')
所以自己靈活的根據(jù)自己的框架來拼接sql語句即可。希望我的分享給大家?guī)韼椭?/i>