Codeigniter-输入数据保存在多个数组和数据库表中

时间:2020-04-23 11:23:16

标签: php codeigniter

我有一个现有的表单,该表单将输入数据以数组格式传递给模型。 $ postdata具有视图中的所有数据并将其发送到模型。

控制器:

$inquiry_id = $this->input->post('inquiry_id');
$postdata = $this->input->post();
$this->load->model('Design_model');
$this->Design_model->insertdata($postdata,$inquiry_id);

型号:

function insertdata($data = array(), $inquiry_id){
        $sql = $this->db->query("select * from design where inquiry_id='".$inquiry_id."'");
        if($sql->num_rows() == 0){
                $sql_query = $this->db->insert('design', $data);
        }
        else{
            $this->db->where('inquiry_id', $inquiry_id);
            $this->db->update('design', $data);
        }          
    }

上述工作正常。现在,我想在视图中添加一些字段并保存在其他数据库表中。需要从要保存的$ postdata数组中排除新的字段值。需要找到最佳方法来做到这一点。我可以从所有新字段的名称开始,以便我们可以添加任何过滤器(如果有)以排除在$ postdata中。

2 个答案:

答案 0 :(得分:0)

您可以使用Array helper中的elements()函数。

$array = array(
        'id' => 101,
        'title' => 'example',
        'desc' => 'something',
        'unwanted' => 'bla bla'
);

$filtered_array = elements(array('id','title','desc'),$array); //you can use this directly to the post data

$this->Design_model->insertdata($filtered_array,$inquiry_id);

您可以使用array_merge()array_push()函数将新字段添加到数组。

答案 1 :(得分:0)

假设您有以下数据

$postdata = array("name"=>"xyz",
"email"=>"xyz@gmail.com",
"age"=>"40",
"gender"=>"Male",
"occupation"=>"Engineer"
);

正如您所说,前3条记录来自旧字段,后2条来自新字段。 您需要找到第一个集合的最后一个索引,即“ 3”。现在您可以执行此操作。

$firstDb = array_splice($postdata,0,3);    //here 3 is index we are using to get first 3 records from $postdata
$secondDb = array_slice($postdata,0,3);    //here 3 is index we are using to get records from position 3 from $postdata

输出:

$firstDb = array("name"=>"xyz","email"=>"xyz@gmail.com","age"=>"40");
$secondDb = array("gender"=>"Male","occupation"=>"Engineer");

现在,您可以根据需要插入记录。编码愉快