【问题标题】:Data not insert into codeigniter数据未插入 codeigniter
【发布时间】:2019-05-10 08:05:59
【问题描述】:

我将尝试使用 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 前面缺少$
  • 表列codenameaddress都允许NULL值吗?
  • $user_id 的值(对于save() 方法)是表单上的一个字段吗?
  • 其实我在 youtube 上尝试过这个,所以我不知道所有答案。

标签: php database codeigniter sql-insert


【解决方案1】:

无论数据库操作的结果如何,模型始终返回 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));
}

现在有一个关于数据库操作的准确报告。

【讨论】:

  • 你为什么这么努力,即使你有评论也没有回应是错的
  • 哈哈,所以当萨加尔回来时,也许他会学到一两个新技巧。
  • 对不起,我下次会更活跃&谢谢,它现在可以工作了
【解决方案2】:

第一个检查是数据是否进入保存控制器如果它没有得到数据然后修复它。如果来了,那么以正确的格式将它传递给模型,它肯定会被插入到数据库中。

使用以下打印数据

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

【讨论】:

    【解决方案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 支持“flashdata”,即仅可用于下一个请求的会话数据,然后自动清除。

    【讨论】:

    • 我将 $user_id='null' 放在控制器中,但它仍然无法正常工作
    • @SagarParikhSGR 你从哪里得到你的 user_id?
    • @SagarParikhSGR 通常如果你给控制器一个属性,你可以通过进入你的路由codeigniter.com/user_guide/general/…
    猜你喜欢
    • 2013-03-28
    • 2021-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-07
    • 1970-01-01
    相关资源
    最近更新 更多