Php CodeIgniter更新数据库

Php CodeIgniter更新数据库,php,mysql,codeigniter,model-view-controller,Php,Mysql,Codeigniter,Model View Controller,我无法更新输入字段中的数据。下面是我的例子 当我将新数据放入该输入字段并按edit时,数据应该在DB中更新。到目前为止,我分析的主要问题在模型中。我不能指定$this->db->where('id',$id) 应指定每行的id 查看文件: 型号: 您查看的文件应如下所示: <?php if(isset($records)) : foreach($records as $row): ?> <tr> <?php echo form_open('main/u

我无法更新输入字段中的数据。下面是我的例子

当我将新数据放入该输入字段并按edit时,数据应该在DB中更新。到目前为止,我分析的主要问题在
模型中。我不能指定
$this->db->where('id',$id)

应指定每行的id

查看文件:

型号:


您查看的文件应如下所示:

<?php if(isset($records)) : foreach($records  as $row): ?>
<tr>
    <?php  echo form_open('main/update/' . $row->id) ?>
    <td> <input type="hidden" name="id" value="<?php echo $row->id ;?>" /></td>
    <td><input type="text" name="edit_tname" value="<?php echo $row->tname ;?>"/></td>
    <td><input type="text" name="edit_time" value="<?php echo $row->time; ?>" /></td>
    <td><input type="submit" value="Update" class="btn btn-default "/></td>
    </form>
</tr>


您已经在表单的隐藏输入中传递了
id
,那么为什么要使用
$this->uri->segment()
而不是使用
$this->input->post('id')
为什么要在传递
提交
按钮的地方使用锚点,而不是在表单的
操作
属性中链接控制器,直接使用
按钮,以及不关闭
使用
echo from_close()
来关闭表单不是一种好的做法

由于您使用的是创建多个表单的
循环
,因此您没有关闭表单,因此所有多个表单都被视为单个表单。通过在末尾关闭表单,可以解决问题

希望这将帮助您解决问题

尝试以下方法:

控制器:

public function update()
        {
             $updated_data = array(
                'tname' => $this->input->post('edit_tname'),
                'time' => $this->input->post('edit_time')
             );

            $this->model_users->updateM($updated_data, $this->input->post('id'));
            redirect('main');
        }
型号:

public function updateM($updated_data, $id)
{
   $this->db->where('id', $id);
   $this->db->update('tasks',$updated_data); 
}

表单关闭标签在哪里?当你已经有一个提交按钮时,为什么还要有一个锚呢?另外,你的form_open URL应该传递id。@Arunpudel我确实关闭了表单,但忘了把它放在这里,对此表示抱歉。关于锚定标记,我是php和mvc新手,在另一个教程中发现了这一点。如果您能详细回答我应该如何编写您在评论中提到的代码,那将非常有帮助。:)为什么你不能使用$this->input->post('id')并将其传递给model?另外,你正在关闭这些
@SanjayKumarNS我不想更新
id
,所以把它隐藏起来。我只想更新
tname
time
字段非常感谢兄弟,工作得很有魅力!非常感谢
<?php if(isset($records)) : foreach($records  as $row): ?>
<tr>
    <?php  echo form_open('main/update/' . $row->id) ?>
    <td> <input type="hidden" name="id" value="<?php echo $row->id ;?>" /></td>
    <td><input type="text" name="edit_tname" value="<?php echo $row->tname ;?>"/></td>
    <td><input type="text" name="edit_time" value="<?php echo $row->time; ?>" /></td>
    <td><input type="submit" value="Update" class="btn btn-default "/></td>
    </form>
</tr>
public function update()
        {
             $updated_data = array(
                'tname' => $this->input->post('edit_tname'),
                'time' => $this->input->post('edit_time')
             );

            $this->model_users->updateM($updated_data, $this->input->post('id'));
            redirect('main');
        }
public function updateM($updated_data, $id)
{
   $this->db->where('id', $id);
   $this->db->update('tasks',$updated_data); 
}