CodeIgniter 更新数据库

CodeIgniter update database

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

当我将新数据放入该输入字段并按编辑时,数据库中的数据应该会更新。到目前为止我分析的主要问题在Model。我无法指定 $this->db->where( 'id', $id);

应指定每一行的 ID。

查看文件:

<?php if(isset($records)) : foreach($records  as $row): ?>
<tr>
<?php  echo form_open('main/update') ?>
<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>
<?php
$bttn = '<input type="submit" value="Update" class="btn btn-default "/>';
echo anchor("main/update/$row->id", $bttn);

echo form_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);
            redirect('main');
        }

型号:

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

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

<?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>

解释:

  • 锚元素不提交表单(删除锚元素并使用提交输入提交表单)
  • 如果你检查 form_open 生成的 URL 那么你会看到之前生成的 URL 看起来像 main/update 但事实上我们需要 post/get 将建议的更改
  • 中的值转换为 main/update/XX
  • 封闭式标签

您已经在表单的隐藏输入中传递 id 那么为什么要使用 $this->uri->segment() 而不是 $this->input->post('id') 以及为什么在传递 [= 的地方使用锚点13=] 按钮而不是 link 您在表单的 action 属性中的控制器,直接使用 <input type="submit"> 按钮以及不关闭 </form> 按钮不是好的做法</from>echo from_close() 关闭表单。

由于您正在使用 loop 创建多个表单,因此您没有关闭表单,所有多个表单都被视为单个表单。最后关闭表格即可解决问题。

希望这能帮助您解决问题

试试这个:

控制器:

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); 
}