【问题标题】:CodeIgniter Update database with join and if statement phpCodeIgniter 使用 join 和 if 语句更新数据库
【发布时间】:2018-08-22 03:57:38
【问题描述】:

我正在做一个休假审批系统,有年休假和临时休假两种。

    public function approve($id, $leave_type, $leave_start, $leave_end) 
{   
    $this->db->set('status', 1);
    $this->db->where('id', $id);
    $this->db->update('leave');
    $this->db->join('users', 'users.id = leave.user_id');


    if($leave_type == "Annual")
    {
        $this->db->set('casual_left', '`casual_left`+10', FALSE);
        $this->db->where('id', $id);
        $this->db->update('users');         
    }       
    else{

        $this->db->set('annual_left', '`annual_left`+3', FALSE);
        $this->db->where('id', $id);
        $this->db->update('users');
    }

    return $this->db->affected_rows() > 0;     
}

我不确定条件的顺序。

【问题讨论】:

    标签: php database codeigniter if-statement join


    【解决方案1】:

    请试试这个:

        $this->db->set('status', 1);
        if($leave_type == "Annual")
        {
          $this->db->set('casual_left', '`casual_left`+10', FALSE);
        }       
        else{
          $this->db->set('annual_left', '`annual_left`+3', FALSE);
        }
    
       $this->db->where('leave.id',$id);
       $this->db->where('users.id',$id);
       $this->db->where('leave.user_id = users.id');
       $this->db->update('leave,users');
    

    【讨论】:

      【解决方案2】:

      请使用以下代码:

      $this->db->set('status', 1);
      if($leave_type == "Annual")
          {
              $this->db->set('casual_left', '`casual_left`+10', FALSE);
           }       
          else{
               $this->db->set('annual_left', '`annual_left`+3', FALSE);
             }
      
      $this->db->where('leave.id',$id);
      $this->db->where('users.id',$id);
      $this->db->update('leave JOIN users ON leave.user_id= users.id');
      

      【讨论】:

      • 现在它说存在 sql 语法错误。错误号:1064 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在 '.id SET status = 1, Annual_left = annual_left+3 WHERE leave.id = '1' A' 附近使用正确的语法在第 1 行更新 leave JOIN users ON leave.user_id= users.id SET status = 1, Annual_left = annual_left+3 其中leave.id = '1' AND @9876543 987654336@ = '1'
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-11-21
      • 2012-03-28
      • 2012-08-26
      • 2016-08-28
      • 1970-01-01
      • 1970-01-01
      • 2017-04-25
      相关资源
      最近更新 更多