Codeigniter:在一个语句中更新Codeigniter中的多个行

时间:2017-07-28 14:58:32

标签: sql codeigniter

我有字典



array(
  'ID1' => 1 ,
  'ID2' => 2,
  'Status' => 'Done'
)




虽然我的表中只有2列,ID和状态。我想只使用一次更新具有ID 1和2的两行($ this-> db-> update)。是否可能或应该进行自定义查询。 我想做($ this-> db-> update(其中ID1 == 1&& ID2 == 2))。

2 个答案:

答案 0 :(得分:0)

<强>要么

// Get your status 
$item = array( 'Status' => $response['Status'] );

// unset status
unset($response['Status']);

// I assume except status rest all values are ids so
// array_values gives id
$this->db->where_in('id', array_values($response));

// Update table
$this->db->update('table', $item );

您必须修改数组

    $data = array(
       array(
         'id' => 1 ,
         'Status' => 'Done'
       ),
       array(
         'id' => 2 ,
         'Status' => 'Done'
       )
    );

然后

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

像这样你可以修改

(评论:亲爱的,我无法这样做,因为我收到了某些服务的回复。我无法编辑此回复。)

[akshay@localhost tmp]$ cat test.php
<?php
$response = array(
  'ID1' => 1 ,
  'ID2' => 2,
  'Status' => 'Done'
);

$data = array(); 
$item = array( 'Status' => $response['Status'] );
unset($response['Status']);

foreach($response as $new){
        $item['id'] = $new;
        $data[] = $item; 
}
print_r($data);

// Here you update 
// $this->db->update_batch('table_name', $data, 'id');
?>

<强> 输出

[akshay@localhost tmp]$ php test.php
Array
(
    [0] => Array
        (
            [Status] => Done
            [id] => 1
        )

    [1] => Array
        (
            [Status] => Done
            [id] => 2
        )

)

答案 1 :(得分:0)

//this will update the values where ids equal any value in the second were_in parameter

//data is array of values to update 
$data = [
   'Status'=>'some status',
];

//array of ids to update
$ids = [1,2];

$this->db->where_in('id', $ids)->update('table_name', $data);