我已经学习了使用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。我错过了什么吗?
感谢您提供的所有解决方案和建议。
答案 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);
}
有关更多信息,您应该在此处查看用户指南:
答案 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>
然后它将起作用。