【问题标题】:insert batch data array?插入批处理数据数组?
【发布时间】:2011-12-08 22:23:19
【问题描述】:

我想通过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);

我想这样插入它们:

php代码和html代码应该怎么改?我该怎么办?

【问题讨论】:

  • 你正在使用一个框架,我们不知道是哪一个,至少给我们框架名称,因为我不知道“insert_batch”来自哪里,它不是标准的PHP跨度>
  • @hakre - 帮助我而不是追我不是更好!!!!
  • @Mathieu Dumoulin - 没有框架怎么办?

标签: php arrays codeigniter foreach


【解决方案1】:

我假设您正在使用 CodeIgniter,并且您要插入的数据库表的名称称为“units”,并且它的“id”列是自动增量的。

我基于 CodeIgniter 用户指南 2.0.3 版中的解决方案,使用对 Database 类的帮助器 ($this-&gt;db-&gt;insert_string()) 的调用。

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

参考http://codeigniter.com/user_guide/database/helpers.html

Database 类提供的insert_string 函数似乎采用关联数组,从内部元素构建INSERT 语句,执行它然后返回数字错误代码。

【讨论】:

    【解决方案2】:

    大声笑,它并不漂亮,但它可能有时会起作用:

    <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,
            ));
        }
    }
    

    我什至建议你不要使用它。但也许它可能会激发某人提供更好的解决方案。

    干杯。

    【讨论】:

    • 我不明白你的问题。
    • 您的 php 代码无法正常工作。我想在数据库表中插入类似此图像的上述值:i.stack.imgur.com/AjwXP.png。从我的问题你不明白哪里?
    猜你喜欢
    • 2017-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-17
    • 2013-09-11
    • 1970-01-01
    • 2013-07-07
    相关资源
    最近更新 更多