首页 > 解决方案 > Codeigniter 没有获得 ID 并且更新数据库不起作用

问题描述

我已经使用 Codeigniter 学习了一个简单的更新脚本,但我有一个问题,数据不会更新,因为它没有获取 id。但是当我尝试在 mysql 中使用 SQL 语法运行查询时,它工作并更新了数据。

这是我的桌子(会员):

id | Name | Job | Age
_____________________
1  |Joe   |None | 30
2  |Mike  |None | 23
3  |Alice |None | 21

这是我通过 id 获取数据的控制器脚本:

public function update_now($id)
  {

    $name = $this->input->post('name');
    $job  = $this->input->post('job');
    $age  = $this->input->post('age');

    $query = $this->m_update->update_data($name, $job, $age);
    if ($query > 0) {
        }
    redirect('data_detail');

这是我的模型脚本:

function update_data($name, $job, $age)
{
  $query=$this->db->query("update member SET name='$name', job='$job', age='$age' where id='$id'");
 } 

当我尝试测试脚本时,更改where id=1它可以工作,但是当我更改它时$id它不起作用,它没有获取数据 ID。我错过了什么吗?感谢您提供所有解决方案和建议。

标签: databasecodeigniter

解决方案


在您的表单中,您需要使用 url 中的 ID 提交数据,如下所示:

<form method="post" action="<?= base_url("route/$id") ?>">
    ....
</form>

然后,您必须使用以下内容将该 id 发送到您的模型中:

$data = array(
    'name' => $this->input->post('name'),
    'job' => $this->input->post('job'),
    'age' => $this->input->post('age')
);

$query = $this->m_update->update_data($id, $data);

if ($query) {
     redirect('data_detail');
}

此时您的模型应更改为:

function update_data($id, $data) {
  return $this->db->where('id', $id)->update("member", $data);
} 

有关更多信息,您应该在此处查看用户指南:

Codeigniter 3 - 使用查询生成器更新数据


推荐阅读