Php Codeigniter数据库删除和插入多个记录

Php Codeigniter数据库删除和插入多个记录,php,mysql,codeigniter,Php,Mysql,Codeigniter,我有一个与和稍有不同的问题。在我的模型类中,我必须将delete和save分离为两个不同的函数,如下所示 #save advanced preferences function savePreference($preferences){ $this->db->insert('bingo_advanced_preferences', $preferences); echo $this->db->last_query(); } #dele

我有一个与和稍有不同的问题。在我的模型类中,我必须将delete和save分离为两个不同的函数,如下所示

  #save advanced preferences
function savePreference($preferences){

    $this->db->insert('bingo_advanced_preferences', $preferences);  
    echo $this->db->last_query();   

}

 #delete advanced preferences
function deletePreference($user_id,$criteria){
return $this->db->delete('bingo_advanced_preferences', array('bingo_user_id' => $user_id,'adv_criteria' =>$criteria));

}
如果我像这样从控制器调用这些函数,那么delete,update可以工作

 //language preferences


            if($this->input->post('language') && count($this->input->post('language')) > 0):
                $this->Bingo_advanced_preferences->deletePreference($user,'15');
                for ($i=0; $i < count($this->input->post('language')); $i++) { 
                    $language_options = array(
                    'bingo_user_id' => $user,
                    'adv_criteria' => 15, //languages
                    'adv_criteria_value' => $this->input->post('language')[$i],
                    'adv_date_created' => date('Y-m-d H:i:s')
                    );
                $this->Bingo_advanced_preferences->savePreference($language_options);
                }
            endif;
//语言首选项
如果($this->input->post('language')&&count($this->input->post('language'))>0):
$this->Bingo\u advanced\u preferences->deletePreference($user,'15');
对于($i=0;$iinput->post('language'));$i++{
$language\u options=数组(
“宾果用户id”=>$user,
“adv_标准”=>15,//语言
'adv_criteria_value'=>$this->input->post('language')[$i],
“adv_date_created”=>日期('Y-m-d H:i:s')
);
$this->Bingo\u advanced\u preferences->savePreference($language\u options);
}
endif;
然而,这并不适合这样一种情况,即有人取消选择所有内容,因此正确的顺序应该是这样的

    $this->Bingo_advanced_preferences->deletePreference($user,'15'); 

    if($this->input->post('language') && count($this->input->post('language')) > 0):

            for ($i=0; $i < count($this->input->post('language')); $i++) { 
                $language_options = array(
                'bingo_user_id' => $user,
                'adv_criteria' => 15, //languages
                'adv_criteria_value' => $this->input->post('language')[$i],
                'adv_date_created' => date('Y-m-d H:i:s')
                );
            $this->Bingo_advanced_preferences->savePreference($language_options);
            }
        endif;
$this->Bingo\u advanced\u preferences->deletePreference($user,'15');
如果($this->input->post('language')&&count($this->input->post('language'))>0):
对于($i=0;$iinput->post('language'));$i++{
$language\u options=数组(
“宾果用户id”=>$user,
“adv_标准”=>15,//语言
'adv_criteria_value'=>$this->input->post('language')[$i],
“adv_date_created”=>日期('Y-m-d H:i:s')
);
$this->Bingo\u advanced\u preferences->savePreference($language\u options);
}
endif;

这只会删除adv_criteria=15的所有记录,并且从不更新(执行后续保存)。当然,我已经用if-else语句解决了我的问题,所以我的问题是为什么这不起作用?我们如何才能做到这一点?

对于删除,您可以在查看文件时执行此操作,如

<input type='checkbox' name='tableId[]' value='<?php echo $value->tableId; ?>"'>
对于Insert,可以在视图文件上执行上述操作 然后在控制器上这样做

function delete_multiple() {
    // Retrive Multiple Id List From Form
    $check_id = $this->input->post('tableId[]');

       // Multiple Delete Loop For Id
       foreach($check_id as $checkId) {
          $this->db->where('tableId', $checkId);
          $this->db->delete('TableName');
        }
}
function multiple_add() {
  $table_Id = $this->input->post('tableId[]');

  foreach($table_Id as $tableId) {

    $data_some = array(
    'tableId' => $tableId,
    'blah' => $this->input->post('blah')
    );

    // Insert Data Function Call
    $this->db->insert('TableName', $data_some);
    }
}

我不理解最后一段中的这一部分——“这只会删除所有记录,从不更新”。我已经澄清了这个问题。好吧,让我试试,如果没有选择任何内容,随后就没有任何内容可保存。如果选择了某个内容,我看不出后续保存有任何问题。因此,在我看来,一切都很好:如果我错了,请纠正我。即使选择了不合理的内容,第二种安排也不会保存。代码似乎很好!它应该在理想情况下工作,检查是否有任何错误。我好像什么也没抓到。只有当保存的数据依赖于从数据库中删除的数据时,代码才会失败。在上面的代码中似乎不是这样。控制器中没有查询!它是一个“控制器”而不是一个“模型”。首先,正确掌握基本知识。