Я попытаюсь вставить и обновить данные с помощью сеанса в 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;
}
Вставьте данные, если я удалил, если в модели!
Допускают ли все столбцы таблицы code, name и address значения NULL?
Является ли значение $user_id (для метода save()) полем формы?
на самом деле я пробую это с YouTube, поэтому я не знаю всех ответов.






Во-первых, переименуйте вызов модели, например:
$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' в контроллер, но он все еще не работает
@SagarParikhSGR где вы берете свой user_id?
@SagarParikhSGR обычно, если вы даете свойство контроллеру, вы делаете это через get в вашей маршрутизации codeigniter.com/user_guide/general/…
У вас есть модель, всегда возвращающая истину, независимо от результата операции с базой данных. Вы должны использовать возвращаемое значение из 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));
}
Теперь у вас есть точный отчет об операциях с базой данных.
почему вы так усердно работаете, даже этот сагар не отвечает даже у вас есть комментарий
Ха-ха, так что, когда Сагар вернется, может быть, он выучит пару новых трюков.
извините, в следующий раз я буду более активен и спасибо, теперь он работает
первая проверка - данные поступают в сохранить контроллер или нет, если он не получает данные, исправьте это. Если придет, то передайте его в модель в правильном формате, и он обязательно будет вставлен в базу данных.
use following printing data
echo $data;
var_dump($data);
print($data);
print_r($data);
Я уверен, что это опечатка, но
if (id=='')должен бытьif ($id=='')Отсутствует $ передid