изображение не вставляется в MySQL с помощью codeigniter - PullRequest
0 голосов
/ 23 декабря 2018

Я пытаюсь вставить изображения в базу данных mysql с другими данными, но показывает ошибку.он показывает $ msg не сохраненных & повторных данных файла просмотра, возможно, из-за ошибки $, которую я установил.PS: я установил тип данных 'image' varchar в базе данных.вот мой файл просмотра:

        <input type="file" class="form-control-file" name="image" id="exampleInputFile" >

это мой контроллер:

 public function save()
{
  $this->load->model('Partner_model');
 $feature = $this->input->post('feature');

  $config['upload_path']          = './uploads/files';
           $config['allowed_types']        = 'gif|jpg|png';
           $config['max_size']             = 100;
           $config['max_width']            = 1024;
           $config['max_height']           = 768;
           $this->load->library('upload', $config);
           if ( ! $this->upload->do_upload('image'))
{
       $error = array('error' => $this->upload->display_errors());
       $this->load->view('partner_profile', $error);
}
else
{


  $user_data= array(

   'pname' => $this->input->post('pname'),
   'type' => $this->input->post('type'),
   'address' => $this->input->post('address'),
   'about' => $this->input->post('about'),
   'city' => $this->input->post('city'),
   'code' => $this->input->post('code'),
   'state'=>$this->input->post('state'),
//  'image'=>$this->upload->do_upload('image')
  'feature'=>implode(",",$feature),
   'image' => $this->upload->data()

    );  
   }

    if($this->Partner_model->save($user_data))
   {
       $msg = "save sucesss" ;
   }
   else
   {
       $msg = "not save";
   }

   $this->session->set_flashdata('msg', $msg);
   $this->load->view('partner_profile');
 }
}

и это моя модель:

    public function save($data)
  {

   return $this->db->insert('property', $data);

  }

1 Ответ

0 голосов
/ 24 декабря 2018

Ваша форма должна иметь атрибут multipart в файле HTML, как показано ниже:

Если вы используете помощник по формам, тогда он должен быть

<?php echo form_open_multipart('/save');?>

В противном случае ваша форма должна иметь энктипатрибут как ниже

<form enctype="multipart/form-data">

Тогда результат загруженных данных $ this-> upload-> data () придет в массив.Таким образом, вы не можете хранить свой массив в столбце mysql.Поэтому вам нужно получить имя файла из $ this-> upload-> data () и сохранить его в переменной, как показано ниже.

Ваш контроллер должен быть

public function save(){
 $this->load->model('Partner_model');
 $feature = $this->input->post('feature');

 $config['upload_path']          = './uploads/files';
 $config['allowed_types']        = 'gif|jpg|png';
 $config['max_size']             = 100;
 $config['max_width']            = 1024;
 $config['max_height']           = 768;
 $this->load->library('upload', $config);
 if ( ! $this->upload->do_upload('image')){
   $error = array('error' => $this->upload->display_errors());
   $this->load->view('partner_profile', $error);
 }else{
  $imageArray = $this->upload->data();
  $image =  $imageArray['file_name'];
  $user_data= array(
   'pname' => $this->input->post('pname'),
   'type' => $this->input->post('type'),
   'address' => $this->input->post('address'),
   'about' => $this->input->post('about'),
   'city' => $this->input->post('city'),
   'code' => $this->input->post('code'),
   'state'=>$this->input->post('state'),
   'feature'=>implode(",",$feature),
   'image' => $image
  );  
 }
 if($this->Partner_model->save($user_data)) {
   $msg = "save sucesss" ;
 }else {
   $msg = "not save";
 }
 $this->session->set_flashdata('msg', $msg);
 $this->load->view('partner_profile');
}
...