首页 > 解决方案 > 用一个查询更新表

问题描述

例如,我有一张关于金额的表格,金额可以增加或减少。表 currency_unit 是:

id = 1
name = dollar
amount = 1000

更新量为:

$change = 5000;

为了更新表,我必须编写两个查询,第一个从表中获取数据,第二个用新数据更新。

我使用查询生成器类

控制器是:

$base = $this->base_model->get_data('currency_unit' , 'amount' , array('id'=> 1));
$data['amount'] = $base->amount + $change; // 1000 + 5000 = 6000
$this->base_model->update_data('currency_unit' , $data , array('id'=> 1));

型号是:

function get_data($table , $select , $where){
$this->db->select($select);
$this->db->where($where);
$result = $this->db->get($table);
return $result->row();
}
function update_data($table , $data , $where){
$this->db->where($where);
$this->db->update($table , $data);
}

有什么方法可以用一个查询而不是两个查询来更新金额?

标签: codeignitersql-update

解决方案


试试这个希望它会工作

$this->db->set('amount', 'amount+500', FALSE);

或者

$this->db->set('amount', 'amount+'.$change, FALSE);

$this->db->where('id', 1);
$this->db->update('currency_unit');

推荐阅读