Php 如何在codeigniter中向mysql插入多维数组
我有一个mysql表,其中包含字段id、meta_键和meta_值。我想在添加任何列表时添加多个元值和元键,以下是我的控制器代码Php 如何在codeigniter中向mysql插入多维数组,php,mysql,codeigniter,Php,Mysql,Codeigniter,我有一个mysql表,其中包含字段id、meta_键和meta_值。我想在添加任何列表时添加多个元值和元键,以下是我的控制器代码 $listingid=145; $metakey=array(); $metavalue=array(); if($data['submitlisting']) { if($vehicle_make != "") { $metake
$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'
)
);
}
但是上面的代码不起作用,请有人帮忙吗?1)创建一个简单的模型函数来插入数据数组
(始终尝试构建模型功能,以便可以重复使用)
2)现在通过下面的
控制器
将所需数组
发送到模型
排列(
'classifieds_id'=>$listingid,
“meta_key”=>“location”,
“meta_值”=>“mangalore”
)
$listingid=145;
$metakey=array();
$metavalue=array();
如果($data['submitlisting']))
{
如果($vehicle\u make!=“”)
{
$metakey[]=“车辆品牌”;
$metavalue[]=$vehicle\u make;
}
如果($vehicle\u Miledge!=“”)
{
$metakey[]=“车辆里程”;
$metavalue[]=$vehicle\u里程;
}
如果($vehicle\u year!=“”)
{
$metakey[]=“车辆年”;
$metavalue[]=$vehicle\u year;
}
$insert=array();
对于($i=0;$iClassifieds\u model->addmeta($insert);
}
}
正确的做法是,最好避免在循环中使用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);
$insert_batch=array();
对于($i=0;$idb->insert\u batch($classifieds\u meta',$insert\u batch);
可以在控制器中尝试此代码:
$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);
$ex=count($this->input->post('ex'));
$count=count($this->input->post('ex'));
$data2=array();
对于($i=0;$i$ex[$i],
);
}
$this->db->insert_batch('table',$data2);
您可能想解释一下它应该做什么,以及那里实际没有发生什么。您能给我们$data['submitlisting'的值吗?
$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);
$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);