Данные не вставляются в codeigniter - PullRequest
0 голосов
/ 09 декабря 2018

Я попытаюсь вставить и обновить данные, используя сеанс в Codeigniter, но данные, не вставленные в базу данных, даже при успешном сохранении печати.Вот мой контроллер:

   public function save($user_id)
   {
   $this->load->model('Users');
   $code=$this->input->post('code');
   $name=$this->input->post('name');
   $address=$this->input->post('address');

  $user_data= array(
    'code' =>$code,
   'name'=>$name,
 'address'=>$address,
 'active'=>1
    );
        if($this->Users->save($user_data,$user_id))
        {
            $this->session->set_flashdata('msg',"save sucesss");
        }else {
                $this->session->set_flashdata('msg',"not save");
        }
        redirect('home');
}

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

 public function save($data,$id)
 {
 if (id=='') {
  // code...
  $this->db->insert('user',$data);
  return true;
}else
{
  $this->db->where('id',$id)
  ->update('user',$data);
  return true;
}
return false;
  }

Вставка данных, если я удален, если в модели!

Ответы [ 3 ]

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

Ваша модель всегда возвращает true независимо от результата операции с базой данных.Вы должны использовать возвращаемое значение из insert() или update(), чтобы «сообщение» сообщало о том, что на самом деле происходит.

Обратите внимание, что аргумент save имеет значение по умолчанию.Теперь вы можете вызвать URL сохранения без аргумента, и он автоматически выполнит вставку.

public function save($user_id = NULL)
{
    $this->load->model('users');
    $user_data = array(
        'code' => $this->input->post('code'),
        'name' => $this->input->post('name'),
        'address' => $this->input->post('address'),
        'active' => 1
    );

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

    $this->session->set_flashdata('msg', $msg);
    redirect('home');
}

public function save($data, $id)
{
    if(empty($id))
    {
        // code...
        // insert returns TRUE on success, FALSE on failure
        return $this->db->insert('user', $data);
    }

    // update() accepts a third argument, a "where" array
    // and returns TRUE on success, FALSE on failure
    return $this->db->update('user', $data, array('id' => $id));
}

Теперь у вас есть точный отчет об операциях с базой данных.

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

первая проверка - данные поступают в сохранить контроллер или нет , если он не получает данные, то исправьте это.Если он появится, передайте его в модели в правильном формате, и он обязательно будет вставлен в базу данных.

используйте следующие данные для печати

echo $data;
var_dump($data);
print($data);
print_r($data);
0 голосов
/ 09 декабря 2018

Первым делом переименуйте вашу модель с помощью вызова, например:

$this->load->model('users');

и используйте это для вызова вашего метода:

$this->users->save($user_data,$user_id)

тогда ваша модель должна выглядеть следующим образом:

public function save($data, $id) {
    if ($id) {
        $this->db->where('id', $id)
                ->update('user', $data);
        return true;
    }
    $this->db->insert('user', $data);
    return true;
}

, если вы хотите использовать ваши flashdata при следующем запросе, используйте это:

$this->session->keep_flashdata('item');
$this->session->keep_flashdata(array('item1', 'item2', 'item3'));

, потому что flashdata предназначен только для следующего запроса:

CodeIgniter поддерживает«Флэш-данные», или данные сеанса, которые будут доступны только для следующего запроса и затем автоматически очищаются.

...