2016-05-06 2 views
0

я копирую этот код в CodeIgniter официальной документации, но я не знаю, почему это вызовет ошибку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

Неизвестного столбец 'Массив' в 'списке поля'

UPDATE change_request SET status = 'Y', approve_by = массив, id = '22'

Это звучит странно, поскольку этот код работает в моей другой функции. Есть идеи?

+0

общественная функция acceptChangeRequest ($ ID, $ data1, $ принять) print_r ($ data1) проверить, что приходит в данных 1 он приходит массив Таким образом, он выдает ошибку –

+0

Кажется, что '$ data1' - это массив. Отлаживайте его с помощью 'var_dump ($ data1); exit;' в начале метода, чтобы увидеть, что там находится. – Tpojka

ответ

0

Прочитать документацию Очевидно Read About Update Records In Codeigniter

Здесь ДЕМО Функция For You

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 Приближается В Из массива вы должны извлечь массив для обновления записи

0

Используйте эту функцию в своей модели, чтобы обновить запись.

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); 
0

Что входит в вашу переменную $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, чем вы можете двигаться вперед к решению.

Вы можете увидеть вашу $data1 переменную в функции вашего контроллера:

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

die(); 
Смежные вопросы