如何在codeigniter中将多维数组插入mysql

时间:2014-06-01 12:10:06

标签: php mysql codeigniter

我有一个带有字段id,meta_key,meta_value的mysql表。我想在添加任何列表时添加多个metavalue和metakeys,这是我的控制器代码

        $listingid=145;
        $metakey=array();
        $metavalue=array();

        if($data['submitlisting'])
        {
        if($vehicle_make != "")
        {
            $metakey[]="vehicle_make";
            $metavalue[]=$vehicle_make;
        }   
        if($vehicle_mileage != "")
        {
            $metakey[]="vehicle_mileage";
            $metavalue[]=$vehicle_mileage;
        }
        if($vehicle_year != "")
        {
            $metakey[]="vehicle_year";
            $metavalue[]=$vehicle_year;
        }

        $data['listingmeta']=$this->Classifieds_model->addmeta($listingid,$metakey,$metavalue,$data);

这是型号代码

function addmeta($listingid,$metakey,$metavalue,$data2)
{
    $this->load->database();
    $data = array(
       'classifieds_id' => $listingid ,
       'meta_key' => 'location' ,
       'meta_value' => 'mangalore'
    );

    foreach($data2['listingmeta'] as $meta)
    $this->db->insert('classifieds_meta',
      array(
       'classifieds_id' => $listingid ,
       'meta_key' => 'location' ,
       'meta_value' => 'mangalore'
        )
      );
}

但上面的代码不起作用,请有人帮忙吗?

3 个答案:

答案 0 :(得分:0)

1)创建一个简单的model function只是为了插入数据数组。
(总是尝试构建模型函数以便可以重复使用)

function addmeta($data)
(
    $this->db->insert('classifieds_meta', $data);
)


2)现在通过required array

Controller发送给模特

阵列(        ' classifieds_id' => $ listingid,        ' meta_key' => '位置' ,        ' meta_value' => '班加罗尔'         )

$listingid=145;
$metakey=array();
$metavalue=array();

if($data['submitlisting'])
{
    if($vehicle_make != "")
    {
        $metakey[]="vehicle_make";
        $metavalue[]=$vehicle_make;
    }   
    if($vehicle_mileage != "")
    {
        $metakey[]="vehicle_mileage";
        $metavalue[]=$vehicle_mileage;
    }
    if($vehicle_year != "")
    {
        $metakey[]="vehicle_year";
        $metavalue[]=$vehicle_year;
    }

    $insert = array();
    for($i=0; $i<count($metakey); $i++)
    {
         $insert['classifieds_id'] = $listingid;
         $insert['meta_key'] = $metakey[$i];
         $insert['meta_value'] = $metavalue[$i];

         $this->Classifieds_model->addmeta($insert);
    }
}

答案 1 :(得分:0)

最明智的方法是,最好避免循环中的SQL命令:

$insert_batch = array();

for($i=0; $i<count($); $i++)
{
     $insert['classifieds_id'] = $listingid;
     $insert['meta_key'] = $metakey[$i];
     $insert['meta_value'] = $metavalue[$i];

     $insert_batch []= $insert;
}

$this->db->insert_batch('classifieds_meta', $insert_batch);

答案 2 :(得分:0)

可以将此代码尝试到控制器中:

    $ex=count($this->input->post('ex'));
    $count =count($this->input->post('ex'));
    $data2 =array();
    for($i=0; $i<$count; $i++)  
    {
                $data2[] = array(
                         'ex' => $ex[$i],
                        );      
       }
   $this->db->insert_batch('table', $data2);