Php Codeigniter更新不';行不通

Php Codeigniter更新不';行不通,php,database,codeigniter,Php,Database,Codeigniter,我的更新无法正常工作。删除、查看和添加工作精 这是我的extraoptie_型号: function update($id, $extraOptie) { $this->db->where('id', $id); $this->db->update('extraOptie', $extraOptie); } 我的控制器: function update($id) { // Check admin if not Acces Denied

我的更新无法正常工作。删除、查看和添加工作精

这是我的extraoptie_型号:

function update($id, $extraOptie) {
    $this->db->where('id', $id);
    $this->db->update('extraOptie', $extraOptie);
}
我的控制器:

    function update($id) {
    //  Check admin if not Acces Denied
    $gebruiker = $this->session->userdata('gebruiker');
    if ($gebruiker->accountLevel != "admin") {
        $data['title'] = 'Acces Denied';
        $partials = array('header' => 'main_header', 'content' => 'admin_noacces', 'footer' => 'main_footer');
        $this->template->load('main_master', $partials, $data);
    } else {
        // prefill form values
        $extraOptie = $this->extraoptie_model->get($id);
        $data['id'] = $id;
        $data['beschrijving'] = $extraOptie->beschrijving;
        $data['actuelePrijs'] = $extraOptie->actuelePrijs;
        $data['soort'] = $extraOptie->soort;
        $data['aantalGangen'] = $extraOptie->aantalGangen;
        $data['tabelNaam'] = $extraOptie->tabelNaam;

        // set common properties
        $data['title'] = 'Extra optie update';
        $data['message'] = '';
        $data['action'] = site_url('admin/extraoptie/updateExtraOptie/');

        //  load view
        $partials = array('header' => 'main_header', 'content' => 'admin_extraoptieedit', 'footer' => 'main_footer');
        $this->template->load('main_master', $partials, $data);
    }
}

function updateExtraOptie() {
    //  Check admin if not Acces Denied
    $gebruiker = $this->session->userdata('gebruiker');
    if ($gebruiker->accountLevel != "admin") {
        $data['title'] = 'Acces Denied';
        $partials = array('header' => 'main_header', 'content' => 'admin_noacces', 'footer' => 'main_footer');
        $this->template->load('main_master', $partials, $data);
    } else {
        // set common properties
        $data['title'] = 'Update extra optie';
        $data['action'] = site_url('admin/extraoptie/updateExtraOptie');


        // save data
        $id = $this->input->post('id');
        $extraOptie = array('beschrijving' => $this->input->post('beschrijving'),
            'actuelePrijs' => $this->input->post('actuelePrijs'),
            'soort' => $this->input->post('soort'),
            'aantalGangen' => $this->input->post('aantalGangen'),
            'tabelNaam' => $this->input->post('tabelNaam'));

        if ($extraOptie['aantalGangen'] == '') {
            $extraOptie['aantalGangen'] = null;
        }
        if ($extraOptie['tabelNaam'] == '') {
            $extraOptie['tabelNaam'] = null;
        }

        $this->extraoptie_model->update($id, $extraOptie);

        // set user message
        $data['message'] = '<div class="success">update success</div>';


        //  redirect to index
        redirect('admin/extraoptie/index', 'refresh');
    }
}
函数更新($id){
//如果未拒绝访问,请检查管理员
$gebruiker=$this->session->userdata('gebruiker');
如果($gebruiker->accountLevel!=“admin”){
$data['title']=“拒绝访问”;
$partials=array('header'=>'main\u header','content'=>'admin\u noacces','footer'=>'main\u footer');
$this->template->load('main_master',$partials,$data);
}否则{
//预填充表单值
$extraOptie=$this->extraOptie\u model->get($id);
$data['id']=$id;
$data['beschrijving']=$extraOptie->beschrijving;
$data['actuelePrijs']=$extraOptie->actuelePrijs;
$data['soort']=$extraOptie->soort;
$data['aantalGangen']=$extraOptie->aantalGangen;
$data['tabelNaam']=$extraOptie->tabelNaam;
//设置公共属性
$data['title']='Extra optie update';
$data['message']='';
$data['action']=site_url('admin/extraoptie/updateExtraOptie/');
//负载视图
$partials=array('header'=>'main\u header','content'=>'admin\u extraoptionedit','footer'=>'main\u footer');
$this->template->load('main_master',$partials,$data);
}
}
函数updateExtraOptie(){
//如果未拒绝访问,请检查管理员
$gebruiker=$this->session->userdata('gebruiker');
如果($gebruiker->accountLevel!=“admin”){
$data['title']=“拒绝访问”;
$partials=array('header'=>'main\u header','content'=>'admin\u noacces','footer'=>'main\u footer');
$this->template->load('main_master',$partials,$data);
}否则{
//设置公共属性
$data['title']='Update extra optie';
$data['action']=站点url('admin/extraoptie/updateExtraOptie');
//保存数据
$id=$this->input->post('id');
$extraOptie=array('beschrijving'=>$this->input->post('beschrijving'),
'actuelePrijs'=>this->input->post('actuelePrijs'),
'soort'=>this->input->post('soort'),
'aantalGangen'=>this->input->post('aantalGangen'),
'tabelNaam'=>this->input->post('tabelNaam');
如果($extraOptie['aantalGangen']=''){
$extraOptie['aantalGangen']=null;
}
如果($extraOptie['tabelNaam']=''){
$extraOptie['tabelNaam']=null;
}
$this->extraoptie\u model->update($id,$extraoptie);
//设置用户消息
$data['message']=“更新成功”;
//重定向到索引
重定向('admin/extraoptie/index','refresh');
}
}
我的看法是:

<table class='centered text'>
    <form method="post" action="<?php echo $action; ?>">
    <?php
    $hidden = array('id' => $id);
    form_hidden($hidden);
    ?>
    <tr>
        <td><?php echo form_label('Beschrijving:', 'beschrijving'); ?></td>
        <td><?php echo form_textarea(array('name' => 'beschrijving', 'id' => 'beschrijving', 'value' => $beschrijving, 'cols' => '30', 'rows' => '5')); ?></td>
    </tr>
    <tr>   
        <td><?php echo form_label('Prijs:', 'prijs'); ?></td>
        <td><?php echo form_input(array('name' => 'actuelePrijs', 'id' => 'actuelePrijs', 'value' => $actuelePrijs, 'size' => '10')); ?></td>
    </tr>
    <tr>
        <td><?php echo form_label('Soort:', 'soort'); ?></td>
        <td><?php echo form_input(array('name' => 'soort', 'id' => 'soort', 'value' => $soort, 'size' => '30')); ?></td>
    </tr>
    <tr>
        <td><?php echo form_label('Aantal gangen:', 'aantalGangen'); ?></td>
        <td><?php echo form_input(array('name' => 'aantalGangen', 'id' => 'aantalGangen', 'value' => $aantalGangen, 'size' => '10')); ?></td>
    </tr>
    <tr>
        <td><?php echo form_label('Tabel naam:', 'tabelNaam'); ?></td>
        <td><?php echo form_input(array('name' => 'tabelNaam', 'id' => 'tabelNaam', 'value' => $tabelNaam, 'size' => '30')); ?></td>
    </tr>    
    <tr>
        <td colspan='2' class='center'>
            <?php echo form_submit('submit', 'Opslaan', 'id="opslaan"');; ?>
            <?php echo form_button('annuleer', 'Annuleren', 'id="annuleer"'); ?>
            <?php form_close(); ?>
        </td>
    </tr>    
</table>


问题可能来自以下事实: 您有一个php表单_close(); 但是没有php表单_open();
不确定CI在没有打开的情况下对关闭有何反应。

是否启用了CSRF保护?如果是这样,您将需要使用form_open(),正如steve所说,或者使用csrf令牌添加一个隐藏输入,例如:

 <input type="hidden" name="<?php echo $this->security->get_csrf_hash();?>" value="<?php echo $this->security->get_csrf_token_name();?>"/>

谢谢你们两位的快速回复

在和朋友一起盯着代码看了几个小时后,我发现了这个错误

问题是我没有回显表单_hidden($hidden),因此没有向更新模型传递id

<table class='centered text'>
<form method="post" action="<?php echo $action; ?>">
<?php
$hidden = array('id' => $id);
form_hidden($hidden);
?>
<tr>

<table class='centered text'>
<form method="post" action="<?php echo $action; ?>">
<?php
$hidden = array('id' => $id);
echo form_hidden($hidden);
?>
<tr>