CodeIgniter查询:如何将一列值移动到同一行中的另一列,并将当前时间保存在原始列中?

在我的数据库表中,我有两个日期时间列:和.这些列允许我跟踪某人上次使用我正在构建的服务的有效登录名的时间。LastCurrent

使用 CodeIgniter 的活动记录,是否可以更新一行,以便该值接收该值,然后将该值替换为当前日期时间?LastCurrentCurrent


答案 1

试试这个:

$data = array('current_login' => date('Y-m-d H:i:s'));
$this->db->set('last_login', 'current_login', false);
$this->db->where('id', 'some_id');
$this->db->update('login_table', $data);

特别注意呼叫的第 3 个参数。 防止 CodeIgniter 引用第 2 个参数 -- 这允许将值视为表列而不是字符串值。对于任何不需要特殊处理的数据,您可以将所有这些声明集中到数组中。set()false$data

上述代码生成的查询:

UPDATE `login_table`
SET last_login = current_login, `current_login` = '2018-01-18 15:24:13'
WHERE `id` = 'some_id'

答案 2
$data = array( 
    'name'      => $_POST['name'] , 
    'groupname' => $_POST['groupname'], 
    'age'       => $_POST['age']
);

$this->db->where('id', $_POST['id']);

$this->db->update('tbl_user', $data);

推荐