我有字典
array(
'ID1' => 1 ,
'ID2' => 2,
'Status' => 'Done'
)

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