简体   繁体   English

如何使用 codeigniter 使用 where 多个或单个 id 在单个查询中更新多个或单个行?

[英]How to update multiple or single row in single query using where multiple or single id using codeigniter?

I want to update multiple or single row in database in one query where multiple ids or single id post from the form.我想在一个查询中更新数据库中的多行或单行,其中多个ids或单个id从表单发布。 I couldn't find it works in update batch.我找不到它在更新批处理中有效。 I don't know how to do it.我不知道该怎么做。 I have already searched on google on how to make it but I have no luck.我已经在谷歌上搜索了如何制作它,但我没有运气。 Your answer is very much appreciated.非常感谢您的回答。

Html and AJAX Html 和 AJAX

<form class="form-horizontal" enctype="multipart/form-data" method="POST">
   <div class="form-group">
      <label class="col-sm-3 control-label" for="name"><?php echo $this->lang->line('Select Lead Contacts'); ?>
      </label>
      <div class="col-sm-9 col-md-6 col-lg-6">
         <select id="chkveg" name="mySelect[]" class="form-control" multiple="multiple">
            <?php foreach($list_of_leads_contact as $lc) {
               ?>
            <option value="<?php echo $lc->id ?>"><?php echo $lc->first_name ?> <?php echo $lc->last_name ?></option>
            <?php } ?>
         </select>
      </div>
   </div>
   <div class="form-group">
      <label class="col-sm-3 control-label" ><?php echo $this->lang->line('Contact Group'); ?> *
      </label>
      <div class="col-sm-9 col-md-6 col-lg-6">
         <?php if(isset($group_checkbox)) echo $group_checkbox; ?>
         <span class="red">
         <?php
            if($this->session->userdata('group_type_error')==1){
                echo '<b>'.$this->lang->line('Contact Group').'</b>'.str_replace("%s","", $this->lang->line("required"));
            $this->session->unset_userdata('group_type_error');
            }
            ?>
         </span>
      </div>
   </div>
   </div>
   <button name="submit" id="submitButton" type="button" class="btn btn-primary btn-lg"><i class="fa fa-save"></i> <?php echo $this->lang->line('Save');?></button>
</form>
<script type="text/javascript">
   $j(function() {
   $( ".datepicker" ).datepicker();
   });
   
   $(function() {
    $('#submitButton').click(function() {
     var dataString = $('.form-horizontal').serialize();
   
   
     $.ajax({
         type: 'POST',
         url: base_url +'lead/insert_leads_in_groups', // your php url would go here
         data: dataString,
     }).done(function(msg) {
   
     });
   
   
    });
   });
   
   
</script>

Controller Code Controller 代码

public function insert_leads_in_groups()
{
    $user_id = $this->input->post('mySelect');
    $contact_group_id = $this->input->post('contact_type_id');

    foreach($user_id as $row ) {

        $data = array(
            array(                    
                'contact_group_id' => $contact_group_id,

            ),
        );
        $this->db->update_batch('leads', $data, 'id');
    }

}

Error错误

A Database Error Occurred
 
One or more rows submitted for batch updating is missing the 
specified index.

In CI docs you can read在 CI 文档中,您可以阅读

the third parameter is the where key.第三个参数是where键。

and below see the resulting query example.并在下面查看生成的查询示例。 From that its't obviouse that each sub-array should contain a corresponding value for that key.由此看来,每个子数组都应该包含该键的相应值。

So, in your case, you need to put the id value to each sub-array.因此,在您的情况下,您需要将 id 值放入每个子数组中。

public function insert_leads_in_groups()
{
    $user_id = $this->input->post('mySelect');
    $contact_group_id = $this->input->post('contact_type_id');
    $data = [];

    foreach($user_id as $id ) {
        $data[] = [
                'id' = > $id,    
                'contact_group_id' => $contact_group_id,
        ];
    }
    $this->db->update_batch('leads', $data, 'id');

}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM