【问题标题】:Getting id as Array in update_batch in codeigniter在codeigniter的update_batch中获取id作为数组
【发布时间】:2018-05-29 05:22:44
【问题描述】:

我在批量更新时将 ID 设为数组。无法将数据更新到我现有的数据表。请帮帮我

我的错误信息如下所示 Error Message as Image Format

控制器

public function update() 
{

$sID   = $this->input->post('test_id[]');
$sAmt  = $this->input->post('test_priceUpdt[]');
$sOfficeId = $this->input->post('fran_office_id');
$edited_test = array();
for ($i=0; $i < sizeof($sID); $i++)
		{
			if(!empty($sID[$i])) 
			$edited_test[$i] = array(
				'test_id' => $sID[$i],
				'test_priceUpdt' => $sAmt[$i],
				'fran_office_id' => $sOfficeId
			);
}

$edited_test = json_encode($edited_test); 
$data['franchise_tst_pkg'] = (object)$postData = array (
				array(
					'test_id' => $sID,
					't_franchise_price' => $edited_test
				)
			
 ); 
 if ($this->form_validation->run() === true) {
 $this->franchise_price_model->batchTestupdate($postData))
 }

}

查看

<tr>
  <td>
    <input type="text" name="test_name[]" class="form-control" placeholder="" value="<?php echo $subject->test_name; ?>" disabled>
    <input type="hidden" name="test_id[]" class="form-control" placeholder="" value="<?php echo $subject->test_id; ?>">
  </td>
  <td>
    <input type="text" name="test_price[]" class="form-control" placeholder="" value="<?php echo $subject->test_price; ?>" disabled>
  </td>
  <td>
    <input type="text" name="test_priceUpdt[]" class="form-control" placeholder="" value="<?php echo $subject->test_price; ?>" id="test_priceEdt">
  </td>
</tr>

模态

public function batchTestupdate($data = []) 
{ $this->db
        ->update_batch($this->table_test, $data , 'test_id');
}

【问题讨论】:

    标签: php codeigniter


    【解决方案1】:

    update_batch(..) 函数中的第二个参数结构错误。

    更改:

    $data['franchise_tst_pkg'] = (object)$postData = array (
                    array(
                        'test_id' => $sID,
                        't_franchise_price' => $edited_test
                    )
    

    收件人:

    $postData = array();
    if(is_array($sID)){
        foreach($sID as $k=>$v){
            $postData[] = array(
                'test_id' => $v,
                't_franchise_price' => $edited_test
            );
        }
    }
    $data['franchise_tst_pkg'] = (object)$postData;
    

    【讨论】:

    • 先生,在按照您的建议更改代码后,我收到这样的错误消息 - 遇到 PHP 错误 严重性:警告消息:为 foreach() 提供的参数无效 文件名:分支/ Franchise_price.php 行号:97
    • 更新了我的答案。
    • 先生,我完成了这段代码并且它工作了 - if(!empty($sID)){ foreach($sID as $k=>$v ){ $postData[] = array( ' test_id' => $v, 't_franchise_price' => $edited_test ); } $data['franchise_tst_pkg'] = (object)$postData; }
    • 感谢您的支持
    • 先生,出现 1 个问题。至于 batch update 我们期望一行一个值将插入到字段中,但是,这里所有值都更新为一个字段。例如,我有一行 Id-17 ,只期望 - - {"test_id":"17","test_priceUpdt":"1221","fran_office_id":"12"} 用于第 17 行。但是像这样接收到该行的一列(命名为-t_franchise_price)-----(显示在下一条评论中)
    【解决方案2】:

    您可以将模型更改为:

    public function batchTestupdate($data = []) 
    { $this->db
            ->update_batch($this->table_test, explode(',', $data) , 'test_id');
    }
    

    【讨论】:

    • 不运行代码。出现类似 --- 发生数据库错误的错误 您必须使用“set”方法来更新条目。文件名:models/branch/Franchise_price_model.php
    • 在查询前尝试使用 var_dump($data)。可能是 $data 以数组形式传入内部数组
    猜你喜欢
    • 2021-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-06
    • 1970-01-01
    • 1970-01-01
    • 2012-05-11
    • 2017-02-15
    相关资源
    最近更新 更多