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_wherewhere 之间存在差异。

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 中是不是成功? [复制]

如何在 Codeigniter 中检测创建、更新、删除查询是不是成功

PySpark - 为单个行而不是所有记录设置/删除列

Coredata 总是更新行而不是快速插入新行

使用 JPA 更新多行

Hibernate session.update插入行而不是更新行