【php】CodeIgniter上傳xml文件批量添加數(shù)據(jù)到mysql數(shù)據(jù)庫

思路描述: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

這個(gè)圖是我上傳xml文件的表單


這個(gè)圖是文件上傳格式判斷和返回值處理

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


這里是上傳的xml文件保存到本地或服務(wù)器,然后讀取xml文件遍歷通過foreach遍歷數(shù)據(jù)到$item數(shù)組


$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>

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容