【问题标题】:Codeigniter multiple parameter on updateCodeigniter 更新时的多个参数
【发布时间】:2016-09-01 00:02:05
【问题描述】:

我在 Codeigniter 官方文档中复制这段代码,但不知道为什么会报错

 public function acceptChangeRequest($id,$data1,$accept) {
    $data = array(
        'status' => $accept,
        'approve_by' => $data1,
    );
    $this->db->where('id', $id);
    $this->db->update('change_request',$data);
    //return true;
}

错误号:1054

“字段列表”中的未知列“数组”

更新change_request SET status = 'Y',approve_by = 数组 WHERE id = '22'

这听起来很奇怪,因为这段代码可以在我的其他函数中使用。有什么想法吗?

【问题讨论】:

  • 公共函数 acceptChangeRequest($id,$data1,$accept) print_r($data1) 检查数据 1 中的内容,它来自一个数组,这样它就会抛出错误
  • 似乎$data1 是一个数组。在方法的开头使用var_dump($data1);exit;对其进行调试,看看里面有什么。

标签: codeigniter


【解决方案1】:

清楚地阅读文档 Read About Update Records In Codeigniter

这里是为您提供的演示功能

public function updateBasic($data,$user_id){

        $userData=array(
            'marital_status'=>$data['marital_status'],
            'country'=>$data['stateofresidence'],
            'city'=>$data['city'],
            'caste'=>$data['caste'],
            'residential_status'=>$data['residencystatus']
        );
        $this->db->WHERE('user_id',$user_id)->update('basic_profile',$userData);
        return true;
    } 

您必须检查 Print_r();在您的情况下,您的函数会出现什么 $data1 来自 From OF 数组您必须提取数组以更新记录

【讨论】:

    【解决方案2】:

    在你的模型中使用这个函数来更新记录。

    public function acceptChangeRequest($where, $table, $data){
        $this->db->where($where);
        $this->db->update($table, $data);
        return $this->db->affected_rows() > 0;
    }
    

    在您的控制器中使用此代码。

      $where = array('id'=>$id);
    
      $data = array(
         'status' => $accept,
         'approve_by' => $data1,
      );
      $this->User_model->update($where,'table_name',$data); 
    

    【讨论】:

      【解决方案3】:

      $data1 变量中有什么?我可以看到它是一个数组,这就是问题所在。

      如果您的 $data1 存储像在表行中一样的索引,那么这可能是您的解决方案:

      public function acceptChangeRequest($id,$data1,$accept) {
          $data1["status"] = $accept;
      
          $this->db->where('id', $id);
          $this->db->update('change_request', $data1);
      
          return true;
      }
      

      但如果您的 $data1 变量仅存储 approve_by 信息,那么您可能的解决方案是:

      public function acceptChangeRequest($id,$data1,$accept) {
          $data = array(
              'status' => $accept,
              'approve_by' => $data1["approve_by"]
          );
          $this->db->where('id', $id);
          $this->db->update('change_request', $data);
      
          return true;
      }
      

      首先,您需要了解您对$data1 的期望,然后才能继续解决问题。

      您可以在 Controller 的函数中看到您的 $data1 变量:

      print "<pre>";
      print_r($data1);
      print "<pre>";
      
      die();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-10-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-25
        • 1970-01-01
        • 1970-01-01
        • 2020-06-11
        相关资源
        最近更新 更多