Codeigniter无法获取ID,并且无法更新数据库

时间:2018-10-25 18:22:36

标签: database codeigniter

我已经学习了使用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。我错过了什么吗? 感谢您提供的所有解决方案和建议。

3 个答案:

答案 0 :(得分:1)

在您的表单中,您需要像在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 - Updating data using the query builder

答案 1 :(得分:0)

您尚未将$ id传递给模型中的函数update_data

按如下所示更改代码:

控制器

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, $id);
if ($query > 0) {
    }
redirect('data_detail');
}

模型

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

答案 2 :(得分:-2)

您的表单必须具有以下格式:

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

然后它将起作用。