【问题标题】:Syntax error in update generated by codeignitercodeigniter 生成的更新中的语法错误
【发布时间】:2015-10-12 06:14:49
【问题描述】:

我正在使用 codeigniter,并且有一个 sql 查询。我知道问题出在哪里,但不知道要为它编写正确的查询。 我遇到了这样的错误,

UPDATE `fx_tasks` 
SET `timer_status` = 'On', `start_time` = 1444629730, `timer_started_by` = '46' 
WHERE `t_id` = '3438' 
ORDER BY `timer_status=On` DESC

我的 codeingiter 查询是这样的,

$this->db->set('timer_status', $action);
$this->db->set('start_time', time());
$this->db->set('timer_started_by', $this -> user);
$this->db->order_by("timer_status=On","DESC");
$this->db->where('t_id',$task)->update($this->tasks_table);

codeigniter 中的正确查询是什么?

【问题讨论】:

    标签: mysql sql codeigniter sql-update syntax-error


    【解决方案1】:

    update 语句没有order by 子句。从您的 codeigniter 代码中删除它:

    $this->db->set('timer_status', $action);
    $this->db->set('start_time', time());
    $this->db->set('timer_started_by', $this -> user);
    $this->db->where('t_id',$task)->update($this->tasks_table);
    // order by removed
    

    你应该得到一个有效的更新声明:

    UPDATE `fx_tasks` 
    SET    `timer_status` = 'On',
           `start_time` = 1444629730,
           `timer_started_by` = '46'
    WHERE  `t_id` = '3438'
    

    【讨论】:

      【解决方案2】:

      使用Codeigniter Update function

      date_default_timezone_set('asia/kolkata')
      $user = $this->user;
      $data = array(
             'timer_status' => $action,
             'start_time' => date('H:i:s'),
             'timer_started_by' => $user
          );
      
      $this->db->where('t_id', $task);
      $this->db->update('fx_tasks', $data);
      

      date('H:i:s') 返回当前时间并提供时区。如果您需要打印时间戳,请使用date('Y-m-d H:i:s')

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多