【问题标题】:How can I update TIMESTAMP with Codeigniter and MySQL?如何使用 Codeigniter 和 MySQL 更新 TIMESTAMP?
【发布时间】:2013-01-09 19:33:58
【问题描述】:

如何使用 Codeigniter 和 MySQL 更新 TIMESTAMP?我想用INTERVAL 1 MINUTE 更新 我已经尝试了下一个代码:

$data = array('is_active' => $state, 
              'timestamp_demo' => "DATE_ADD(NOW(), INTERVAL 1 MINUTE)");
$this->db->where('demo_session_id', 'web');
$this->db->update('demo_session', $data);

但不起作用。我能怎么做?

【问题讨论】:

  • 你试过这个 echo $this->db->last_query() 看看生成了什么查询
  • 是的。它生成:UPDATE demo_session` SET is_active = 1, timestamp_demo = 'DATE_ADD(NOW(), INTERVAL 1 MINUTE)' WHERE demo_session_id = 'web'` 但时间戳字段重置为零跨度>
  • 你看到 date_add 是用逗号包裹的吗?
  • 你检查this question了吗?它建议使用set() 而不是最后一个参数为FALSE

标签: mysql codeigniter


【解决方案1】:

尝试这样的查询

$this->db->query("UPDATE demo_session 
                  SET 
                     is_active = 1, 
                     timestamp_demo = DATE_ADD(NOW(), INTERVAL 1 MINUTE)
                  WHERE demo_session_id = 'web'");

【讨论】:

    【解决方案2】:

    您可以使用您正在使用的 Active Records 执行此操作:

    $this->db->where('demo_session_id', 'web');
    $this->db->set('is_active', $state);
    $this->db->set('timestamp_demo', 'DATE_ADD(NOW(), INTERVAL 1 MINUTE)', FALSE);
    $this->db->update('demo_session');
    

    $this->db->set() 中的第三个参数防止 CodeIgniter 转义数据,因此它将使用 MySQL 函数。

    最终会是这样的:

    UPDATE 'demo_session' SET 'is_active' = $state, 'timestamp_demo' = DATE_ADD(NOW(), INTERVAL 1 MINUTE) WHERE 'demo_session_id' = 'web'

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-25
      • 2011-01-11
      • 2019-12-20
      • 2019-07-28
      • 2017-04-01
      相关资源
      最近更新 更多