代码点火器 - 如果查询结果返回行,如何更新数据库

时间:2015-08-26 19:13:18

标签: php mysql codeigniter activerecord

我在codeigniter中构建一个查询。如果条件满足,我想更新数据库中的相应行,如果不是,我想插入一个新行。这是我的代码:

$query = $this->db->get_where('extra_examples', array('question' => $data['question'],'tag' => $data['tag'] ));
        if ($query->num_rows() > 0){
            $this->db->update('extra_examples', $data);
            return ($this->db->affected_rows() > 0);
        } else {
            $this->db->insert('extra_examples', $data);
            return $this->db->insert_id();
        }

插入工作正常,如果整个数据库中只有一行,则更新有效,但如果有多行,则更新似乎会更改数据库中的所有行。我希望它只更改question = data [' question']和tag = data [' tag]的行。

我做错了什么?

1 个答案:

答案 0 :(得分:3)

我认为这一行存在问题:

  

$ this-> db-> update('extra_examples',$ data);

此行只更新值为$data的表格。因此,只要条件为真,就会执行并更新所有行。尝试在$data上添加一些条件,以便只有选定的行受到影响。

你能做的是:

$data = array(
           // put array data
        );

$this->db->where('id', $id); // check where to put 
$this->db->update('mytable', $data);