我正在尝试使用下拉菜单在Codeigniter中创建更新功能。不幸的是,当我点击提交时,我得到一个错误,我的where子句中有一个“未知列'stages.id'。我在代码的其他部分使用了stages.id来更新其他字段,但我不确定为什么会发生这种情况。对于为什么会发生这种情况的任何帮助或想法都将不胜感激!
function update_stage_name($id){
$stage_name=array(
'stage_name'=>$this->input->post('stage_name')
);
$this->db->where('stages.id', $id);
$this->db->update('stage_names', $stage_name);
}
根据错误,这是数据库查询的样子:
UPDATE `stage_names` SET `stage_name` = 'Holly' WHERE `stages`.`id` = '264'
我有几张桌子,而舞台则是主要的。每个阶段只有一个stage_name,但stage_name可以属于多个阶段。 Stage_name没有来自阶段的外键,但stage具有stage_name_id。
编辑:所以似乎问题实际上是我想要更新阶段表,而不是stage_names表。但问题是阶段表有stage_name_id但我的表单输入是stage_name。如何以相同的方法获取id?我仍然是活跃的记录和codeigniter的新手,我不知道如何继续。答案 0 :(得分:1)
正如错误所示,您没有可以使用stages.id
引用的列。主要是因为它错了表..
尝试..
UPDATE `stage_names` SET `stage_name` = 'Holly' WHERE `stage_names`.`id` = '264'
//Note changed the table name in the where
如果您需要使用stages.id
和(正如您在评论中所说)您没有FK,那么您将需要创建一个,因为数据库不够智能,无法猜测它。因此,一旦您在stages_names
中有一个名为stage_id
(或类似)的字段,您就可以这样做..
UPDATE `stage_names` SET `stage_name` = 'Holly' WHERE `stage_id` = '264'
答案 1 :(得分:0)
试试这个:
function update_stage_name($id) {
$stage_name=array(
'stage_name'=> $this->input->post('stage_name')
);
$this->db->where('stage_names.id', (int)$id);
$this->db->update('stage_names', $stage_name);
}