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

标签 php database forms codeigniter rows

我想在一个查询中更新数据库中的多行或单行,其中多个 ids 或单个 id 从表单发布。我找不到它在更新批处理中有效。我不知道该怎么做。我已经在谷歌上搜索过如何制作它,但我没有运气。非常感谢您的回答。

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 代码

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');
    }

}

错误

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

最佳答案

在 CI 文档中你可以阅读

the third parameter is the where key.

和下面的结果查询示例。由此可见,每个子数组都应包含该键的对应值。

因此,在您的情况下,您需要将 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');

}

关于php - 如何使用 codeigniter 使用多个或单个 id 在单个查询中更新多行或单行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67157122/

相关文章:

mysql - Worklight 应用程序和 "cloud"MySQL 数据库之间进行通信

MongoDB固定大小数组实现

javascript - 如何在不使用相同音频ID的情况下播放从数据库获取的多个音频文件

php - 使用 RewriteRule 时,mail() 会发送两次电子邮件

php - 我可以将 .user.ini 文件放在 PHP 文档根目录之外吗?

表单提交时未调用 JavaScript 闭包函数

css - 如何删除 IE 6 中单选按钮周围的空格?

php - HTML 选择框不突出显示最后一个选项

php - 将波斯语值插入具有波斯语名称的表时出错

php - Laravel:在表单的url中添加查询参数?