Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在codeigniter中向mysql插入多维数组_Php_Mysql_Codeigniter - Fatal编程技术网

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

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

我有一个mysql表,其中包含字段id、meta_键和meta_值。我想在添加任何列表时添加多个元值和元键,以下是我的控制器代码

        $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);