我有一个带有字段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'
)
);
}
但上面的代码不起作用,请有人帮忙吗?
答案 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);