【问题标题】:Codeigniter Update Data In DatabaseCodeigniter 更新数据库中的数据
【发布时间】:2019-06-24 03:30:00
【问题描述】:

我是 Codeigniter 的新手,我无法理解我在更新数据库中的数据的代码中做错了什么。我非常感谢您的意见,因为我一直在绞尽脑汁试图找出问题所在。谢谢!

这是我的控制器:

public function edit(){

            $slug=basename($_SERVER['REQUEST_URI']);

            $data['news_item']=$this->news_model->get_news($slug);

            $id=$data['news_item']['id'];


            $this->load->helper('form');
            $this->load->library('form_validation');

            $data['title'] = 'Edit a news item';

            $this->form_validation->set_rules('title', 'Title', 'required');
            $this->form_validation->set_rules('text', 'Text', 'required');

            if ($this->form_validation->run() === FALSE)
                {
                    $this->load->view('templates/header', $data);
                    $this->load->view('news/edit');
                    $this->load->view('templates/footer');

                }
            else{

                $data = array(
                                'title' => $this->input->post('title'),
                                'text' => $this->input->post('text')
                            );

                $this->news_model->edit_news($id,$data); 
                $this->load->view('templates/header', $data);
                $this->load->view('news/success');
                $this->load->view('templates/footer');
                }   

    }

这些是我的模型,一个用于获取表格行,一个用于更新(显然是 xD):

public function get_news($slug= FALSE){

        if($slug === FALSE){

            $query=$this->db->get('news');
            return $query->result_array();

        }

        $query=$this->db->get_where('news', array ('slug' => $slug));

        return $query->row_array();

    }

public function edit_news($id,$data){

        $this->db->where('id',$id);
        $this->db->update('news',$data);

        return;
    }

我已经调试(如果你可以这么称呼它)控制器和模型,并通过打印或回显它们检查所有重要的值,并且这些都是按顺序排列的。

我认为我的表格或任何东西都没有错。在调用实际更新之前,一切似乎都运行良好(

$this->db->where('id',$id); 
$this->db->update('news',$data);

)。

我什至不记得我在这个 xD 上尝试了什么提前感谢任何输入!

【问题讨论】:

    标签: php sql sql-update codeigniter-3 insert-update


    【解决方案1】:

    尝试返回更新

    return $this->db->update('news',$data);
    

    还有你在哪里输入的 id 变量?

    也许可以

    $this->db->where('id', $this->input->post('id'))
    

    看起来像

    $this->db->where('id', $this->input->post('id'));
    return $this->db->update('news',$data);
    

    但请先尝试返回。

    来自 cmets 关于如何创建更新函数的第 2 部分

    public function edit_news($id,$data){
    
     $slug = url_title($this->input->post('title'));
    
    
      $data = array('title' => $this->input->post('title'),
                  'slug' => $slug,
                  'body' => $this->input->post('body')
    
                    );
    
                  $this->db->where('id', $this->input->post('id'));
    
                  return $this->db->update('posts',$data);
    
    }
    

    【讨论】:

    • 感谢您的回复,但我之前尝试过,没有结果。我的 id 设置为 auto_increment 所以每当我创建一个新的东西时它会自动设置自己。我已经附和出来了,它在被 update() 函数使用之前肯定就在那里。
    • 非常感谢!!!!当我添加“id”输入时它起作用了!!所以,它确实有效,但由于客户不熟悉 id,我如何不使用表单将其传递给函数?
    • 我不太确定我明白你在问什么,通常如果你在(帖子)上,id 功能应该自动预定义,不需要用户采取任何行动,只需点击编辑按钮来调用编辑功能。如果你需要一个例子,请给我进一步的说明。另外,如果我的回答有效,请将其标记为正确,以便我获得信用。
    • 我在上面举了一个例子,说明我通常如何为更新函数传递数据
    • 我也是这么想的。我不希望用户必须输入正在编辑的数据的 ID。我希望它只是通过进入新闻/编辑页面来“知道”或“保存”。让我解释一下……
    猜你喜欢
    • 2015-07-09
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 2018-06-08
    • 1970-01-01
    • 2020-06-11
    • 2021-09-20
    相关资源
    最近更新 更多