2011-10-16 89 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,执行它,然后返回一个数值错误代码。