【问题标题】:Codeigniter query updating all rows instead of 1Codeigniter 查询更新所有行而不是 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数组吗?

标签: php mysql ajax codeigniter


【解决方案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'] ));

【讨论】:

    猜你喜欢
    • 2020-11-11
    • 1970-01-01
    • 1970-01-01
    • 2021-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-31
    • 1970-01-01
    相关资源
    最近更新 更多