Данные не вставляются в codeigniter

Я попытаюсь вставить и обновить данные с помощью сеанса в 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;
  }

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

Я уверен, что это опечатка, но if (id=='') должен быть if ($id=='') Отсутствует $ перед id

DFriend 09.12.2018 04:04

Допускают ли все столбцы таблицы code, name и address значения NULL?

DFriend 09.12.2018 04:08

Является ли значение $user_id (для метода save()) полем формы?

DFriend 09.12.2018 04:11

на самом деле я пробую это с YouTube, поэтому я не знаю всех ответов.

Sagar Parikh 09.12.2018 13:33
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
4
149
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Во-первых, переименуйте вызов модели, например:

$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 supports “flashdata”, or session data that will only be available for the next request, and is then automatically cleared.

Я поставил $ user_id = 'null' в контроллер, но он все еще не работает

Sagar Parikh 09.12.2018 02:15

@SagarParikhSGR где вы берете свой user_id?

Grischpel 09.12.2018 09:11

@SagarParikhSGR обычно, если вы даете свойство контроллеру, вы делаете это через get в вашей маршрутизации codeigniter.com/user_guide/general/…

Grischpel 09.12.2018 16:37
Ответ принят как подходящий

У вас есть модель, всегда возвращающая истину, независимо от результата операции с базой данных. Вы должны использовать возвращаемое значение из 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));
}

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

почему вы так усердно работаете, даже этот сагар не отвечает даже у вас есть комментарий

Krishna Jonnalagadda 09.12.2018 04:30

Ха-ха, так что, когда Сагар вернется, может быть, он выучит пару новых трюков.

DFriend 09.12.2018 04:33

извините, в следующий раз я буду более активен и спасибо, теперь он работает

Sagar Parikh 09.12.2018 13:32

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

use following printing data

echo $data;
var_dump($data);
print($data);
print_r($data);

Другие вопросы по теме