无法使用代码点火器将数据更新到数据库


Can't update data to database with codeigniter

我在使用 codeigniter 更新数据库中的数据时遇到问题。这是我的控制器:

  public function update_mission_vision($id)
    {
        $this->securePage();

        $data['mission'] = $mission = $this->about_model->get_mission_vision($id);
        if ($mission == false) {
            $this->session->set_flashdata('msg', 'The mission does not exist.');
            redirect('about/manage-miteri-mission-vision');     
        } else {
            if ($this->input->post('submit')) {
                $this->form_validation->set_rules('title', 'title', 'required|max_length[240]');
                $this->form_validation->set_rules('details', 'details', 'required|max_length[240]');
                if ($this->form_validation->run()) {
                    $added_on = time();
                    $this->about_model->update_mission_vision($added_on, $id);
                    $this->session->set_flashdata('msg', 'mission updated successfully.');
                    redirect('about/manage-miteri-mission-vision');
                }
            }
        }
        $data['title'] = "$mission->title | miteripkr.com";
        $data['keywords'] = "$mission->title";
        $data['content'] = $this->load->view('about-us/update_mission_vision', $data, true);
        $this->load->view('miteri', $data);
    }

这是我的模型:

function get_all_mission_vision($limit = null, $offset = null)
    {
        if ($limit)
        {
            $this->db->limit($limit. $offset);
        }
        return $this->db->get('mission_vision');
    }

function get_mission_vision($id)
{
        $this->db->where('id', $id);
        $query = $this->db->get('mission_vision');
        if ($query->num_rows()) {
            return $query->row();
        } else {
            return false;
        }
}

function update_mission_vision($id, $added_on)
{
        $this->db->where('id', $id);
        $this->db->set('title', $this->input->post('title'));
        $this->db->set('details', $this->input->post('details')); 
        $this->db->set('added_on', $added_on);
        $this->db->update('mission_vision');
}

这是我的观点:

<**div class="container-fluid" style="background:#fff; margin-top:10px; border-radius:5px; min-height:600px; margin-bottom:10px;">
    <form action="" method="post" style="margin-top:30px;">
        <?php echo $this->session->flashdata('msg');?>
        <ol class="breadcrumb">
            <li><a href="#">admin</a></li>
            <li><a href="#">about us</a></li>
            <li class="active"><a href="#">update mission & vision</a></li>
        </ol>
        <div class="form-group">
            <label for="title"> Title for Post</label>
            <input class="form-control" type="text" name="title" placeholder="Enter Title" value="<?php echo set_value('title', $mission->title)?>"> 
            <?php echo form_error('title');?>
        </div>
        <div class="form-group">
            <label for="title"> Details for Post</label>
            <textarea class="ckeditor" name="details" placeholder="Enter Details" style="height:200px;"><?php echo set_value('details', $mission->details); ?></textarea>
            <?php echo form_error('details');?>
        </div>
        <button class="btn btn-success" name="submit" type="submit" value="update"><span class="glyphicon glyphicon-ok"> update</span></button>
    </form>
</div>

它甚至打印成功消息,但我的数据没有更新,为什么?

也许是函数update_mission_vision的调用。你切换了$id$added_on.当然,就像@Kamran Adil说的,你必须把后期数据提供给你的模型。

更新:下面是如何在模型中编写更新函数的示例。因此,您可以查看并制作自己的更新功能。

/**
 * @name string TABLE_NAME Holds the name of the table in use by this model
 */
const TABLE_NAME = 'table';
/**
 * @name string PRI_INDEX Holds the name of the tables' primary index used in this model
 */
const PRI_INDEX = 'field';
/**
 * Updates selected record in the database
 *
 * @param Array $data Associative array field_name=>value to be updated
 * @param Array $where Optional. Associative array field_name=>value, for where condition. If specified, $id is not used
 * @return int Number of affected rows by the update query
 */
public function update(Array $data, $where = array()) {
        if (!is_array($where)) {
            $where = array(self::PRI_INDEX => $where);
        }
    $this->db->update(self::TABLE_NAME, $data, $where);
    return $this->db->affected_rows();
}

也许您丢失了URL中的$id。

使用$id在视图中放置一个隐藏的输入,然后在控制器中分配此$id = $this->input->post('id');以获取$id。控制器中的删除$id update_mission_vision() {