如何使用codeigniter在mysql中保存多行

时间:2013-03-21 16:10:02

标签: php mysql codeigniter

我有一个酒店网站表单,我想更新其服务,客户希望一次更新多个服务。然而,我迷失了如何使用模型将其保存在数据库中。

我已经构建了我的控制器,它看起来像这样:

$items = array(
        array(
                'id'           => $this->input->post('id1', true),
                'hotel_id'     => $hotel_id,
                'des_servicio' => $this->input->post('des_servicio1', true),
                'est_activo'   => $this->input->post('est_activo1', true)
        ),
        array(
                'id'           => $this->input->post('id2', true),
                'hotel_id'     => $hotel_id,
                'des_servicio' => $this->input->post('des_servicio2', true),
                'est_activo'   => $this->input->post('est_activo2', true)
        ),
        array(
                'id'           => $this->input->post('id3', true),
                'hotel_id'     => $hotel_id,
                'des_servicio' => $this->input->post('des_servicio3', true),
                'est_activo'   => $this->input->post('est_activo3', true)
        )
);

$this->hotel_model->save_multiple($items);

[UPDATE]

这就是我的新模型的样子:

function save_multiple($items = array())
{
    $this->db->insert_batch($this->__tabla, $items);
    return $this->db->affected_rows();
}

我的问题是现在它创建了10行(我的原始表单有10个字段),即使我只填充3个字段。所以在我的数据库中存储了3个服务,还有7个空行。怎么能改变这个?

2 个答案:

答案 0 :(得分:1)

foreach $items //I get an error here
    as $item 

应该是

foreach ( $items as $item ) 

答案 1 :(得分:0)

请记住,如果未设置值,则input-> post()将返回false。因此,请检查是否设置了值以将其放入数组中。然后当模型收到它。它节省了所有。或者另一种选择是从传入的数组中在模型中创建一个新数组,然后将新数组传递给insert_batch()函数。

$items = array();

$id = $this->input->post('id1', true);
if( $id != false ) {
    $items[] = array(
        'id'           => $id, true),
        'hotel_id'     => $hotel_id,
        'des_servicio' => $this->input->post('des_servicio1', true),
        'est_activo'   => $this->input->post('est_activo1', true)
    );
}

$id = $this->input->post('id2', true);
if( $id != false ) {
    $items[] = array(
        'id'           => $id, true),
        'hotel_id'     => $hotel_id,
        'des_servicio' => $this->input->post('des_servicio2', true),
        'est_activo'   => $this->input->post('est_activo2', true)
    );
}
....