Ваша модель неисправна.
Вы передаете три аргумента insert()
, но третий, который вы используете, не подходит.Этот аргумент должен быть логическим, который указывает, следует ли экранировать значения и идентификаторы или нет.Вам нужно включить $fea
в $data
, что, вероятно, должно быть сделано в контроллере.
Существует более простой способ создания массива $user_data
, так как он по сути является копией $_POST
, просто используйте$this->input->post()
.
Кроме того, нет очевидной причины, по которой вы используете json_encode
.Если вы не нуждаетесь в таком способе, когда вы извлекаете его из БД, нет причин для беспокойства.Попробуйте удалить json_encode
.
Сначала измените модель
public function save($data)
{
return $this->db->insert('property', $data);
}
Вот пересмотренный метод сохранения
public function save()
{
$this->load->model('Partner_model');
$user_data = $this->input->post(); //makes a copy of $_POST
$feature = $this->input->post('feature');
if($feature) //because $feature will be null if no boxes are checked
{
$user_data['feature'] = json_encode(implode(",", $feature));
}
$msg = $this->Partner_model->save($user_data) ? "save sucesss" : "not save";
$this->session->set_flashdata('msg', $msg);
$this->load->view('partner_profile');
}
Объяснение, запрошенное в комментариях.
Вызов $this->input->post('pname')
возвращает значение $_POST['pname']
, если оно существует, но возвращает ноль, если его не существует.
Когда вы создаете $user_data
, вы делаетешесть вызовов $this->input()
с другим «ключом» каждый раз, чтобы сделать копию $_POST
.
$this->input->post()
без каких-либо аргументов, возвращает весь массив $_POST
.(См. документацию )
$user_data = $this->input->post();
Делает копию $_POST
, используя одну строку кода.Он будет включать $_POST['feature']
, если установлены какие-либо флажки, но $_POST['feature']
не будет установлен, если флажки не установлены.
Есть два способа проверить, были ли отмечены какие-либо флажки.Сначала мы можем проверить, если isset($_POST['feature']) == true
, или мы можем проверить, если $this->input->post('feature') == true
.Я использую второе с вызовом
if($feature)
, что почти совпадает с любой из следующих строк
if($feature != false)...
if($feature != null)...
if( ! empty($feature))...
if( ! is_null($feature))...
Другими словами, if($feature)
оценивается как true, если $feature
установлен и равен что угодно кроме null
, false
, 0, "0", "" (пустая строка), array () (пустой массив)