Codeigniter 查询更新所有行而不是 1
Posted
技术标签:
【中文标题】Codeigniter 查询更新所有行而不是 1【英文标题】:Codeigniter query updating all rows instead of 1 【发布时间】:2016-09-29 04:32:08 【问题描述】:我在通过 ajax 更新行时遇到问题,查询影响的是所有行而不是我给出的单个 id 这是我的模型类函数:
public function edit_season($data)
// echo $a = json_encode($data);
// echo $a->id;
// die();
$this->db->get_where('seasons', array('season_id ' => 11 ));
$query = $this->db->update('seasons',array('names ' => $data['name'] ));
if ($query)
return $query;
else
return FALSE;
我还检查了我从 ajax 获得的数据是否正确,但我想查询存在一些问题,我什至对 id 值进行了硬编码,但它仍然在更新所有名称而不是一个。
【问题讨论】:
$data 的格式是什么?是json数组吗? 【参考方案1】:$this->db->where('season_id', 11));
$query = $this->db->update('seasons', array('names ' => $data['name']));
这是在更新查询时放置where
条件的正确方法。
get_where
和 where
之间存在差异。
get_where
将从表中检索数据行,而where
将添加条件
【讨论】:
这是正确答案。您也可以在更新查询中直接包含 where 语句:$query = $rows->update('seasons',array('names ' => $data['name'] ),array('season_id ' => 11 ));
@jtheman,没错。只是试图为新手提供一个简单的解决方案
抱歉,$rows
定义在哪里?
您需要将$row
替换为$this->db
。已编辑答案【参考方案2】:
你不应该调用 get_where,而是使用 where:
$this->db->where('season_id', 11);
$query = $this->db->update('seasons',array('names ' => $data['name'] ));
你也可以一行完成:
$query = $this->db->update('seasons',array('names ' => $data['name']), "season_id = 11");
【讨论】:
where
不需要表名作为参数。它要么有两个参数,第一个作为列名,第二个作为列值。或者具有键值对的数组,其中键是列名,值是列值【参考方案3】:
试试这个
$this->db->where('seasons', array('season_id ' => 11 ));
$query = $this->db->update('seasons',array('names ' => $data['name'] ));
【讨论】:
以上是关于Codeigniter 查询更新所有行而不是 1的主要内容,如果未能解决你的问题,请参考以下文章
如何测试我的 MySQL 更新查询在 CodeIgniter 中是不是成功? [复制]