2011-10-16 127 views
4

我想insert_batch如在數據庫表下面的例子(MySQL的)插入以下數據:插入批處理數據數組?

HTML:

<input name="u_id[0][0]" value="76"> 

<input name="un[0][0]" value="1"> 
<input type="text" name="ue[0][0]" value="11"> 
<input type="text" name="up[0][0]" value="111"> 



<input name="u_id[1][0]" value="77"> 

<input name="un[1][1]" value="2"> 
<input type="text" name="ue[1][1]" value="22"> 
<input type="text" name="up[1][1]" value="222"> 

<input name="un[1][2]" value="3"> 
<input type="text" name="ue[1][2]" value="33"> 
<input type="text" name="up[1][2]" value="333"> 

PHP:

$u_id  = $this->input->post('u_id'); 
$un  = $this->input->post('un'); 
$up  = $this->input->post('up'); 
$ue  = $this->input->post('ue'); 

$data = array(); 
foreach ($un as $idx => $name) { 
    $data[] = array(
     'u_id' => $u_id[$idx],     
     'un' => $un[$idx], 
     'up' => $up[$idx], 
     'ue' => $ue[$idx], 
    ); 
}; 
$this -> db -> insert_batch('units', $data); 

我想插入他們是這樣的:

enter image description here

如何更改php代碼和html代碼?我該怎麼辦?

+1

你正在使用一個框架,我們不知道哪一個,至少給我們框架名稱,因爲我不知道「insert_batch」來自哪裏,它不是標準的PHP –

+0

[How can插入值數組作爲批處理數據庫mysql?](http://stackoverflow.com/questions/7790943/how-can-insert-values-array-as-batch-in-database-mysql) – hakre

+0

@hakre - 它不是更好這幫助我而不是追逐我! –

回答

0

大聲笑,這不是漂亮,但它威力有時工作:

<input name="u_id[]" value="76"> 

<input name="un[]" value="1"> 
<input type="text" name="ue[]" value="11"> 
<input type="text" name="up[]" value="111"> 



<input name="u_id[]" value="77"> 

<input name="un[]" value="2"> 
<input type="text" name="ue[]" value="22"> 
<input type="text" name="up[]" value="222"> 

<input name="un[]" value="3"> 
<input type="text" name="ue[]" value="33"> 
<input type="text" name="up[]" value="333"> 

$u_id=$this->input->post('u_id'); 
$un=$this->input->post('un'); 
$up=$this->input->post('up'); 
$ue=$this->input->post('ue'); 
for($i=0;$i<count($u_id);$i++){ 
    for($ii=0;$ii<count($un[$i]);$ii++){ 
     (count($un[$i])>1)?$unn=$un[$i][$ii+1]:$unn=$un[$i][$ii]; 
     (count($ue[$i])>1)?$uen=$ue[$i][$ii+1]:$uen=$ue[$i][$ii]; 
     (count($up[$i])>1)?$upn=$up[$i][$ii+1]:$upn=$up[$i][$ii]; 
     $this->db->insert('units', array(//use db insert here 
      'u_id'=>$u_id[$i][0], 
      'un'=>$unn, 
      'ue'=>$uen, 
      'up'=>$upn, 
     )); 
    } 
} 

我會走這麼遠來建議你不要使用它。但也許這可能會激勵某人提供更好的解決方案。

乾杯。

+0

對我來說這不起作用(真),它怎麼樣「foreach」? –

+0

我不明白你的問題。 – stormdrain

+0

你的php代碼不能正常工作。我想在數據庫表中插入上面的值像這個圖像:http://i.stack.imgur.com/AjwXP.png。你不明白我的問題? –

1

我假設您使用的是CodeIgniter,並且您要插入的數據庫表的名稱稱爲「單位」,並且其「id」列是自動增量。

我基於CodeIgniter用戶指南2.0.3版的解決方案,通過調用Database類的幫助器($this->db->insert_string())

foreach ($data as $row) 
{ 
    $error_code = $this->db->insert_string('units', $row); 
} 

參見http://codeigniter.com/user_guide/database/helpers.html

insert_string的功能,該數據庫類提供似乎採取關聯數組,構建內部從元素的聲明INSERT,執行它,然後返回一個數值錯誤代碼。