Php 代码点火器-如果查询结果返回行,如何更新数据库
我正在codeigniter中构造一个查询。如果条件满足,我想更新数据库中的相应行,如果条件不满足,我想插入新行。这是我的代码:Php 代码点火器-如果查询结果返回行,如何更新数据库,php,mysql,codeigniter,activerecord,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-
$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]所在的行
我做错了什么?我认为这一行有问题: $this->db->update('extra_examples',$data) 此行仅使用值
$data
更新表。所以,只要条件为true,就会执行并更新所有行。尝试在$data
上设置一些条件,以便只影响选定的行
您可以做的是:
$data = array(
// put array data
);
$this->db->where('id', $id); // check where to put
$this->db->update('mytable', $data);
我尝试在更新上方添加这一行:
$this->db where(数组('question'=>$data['question'],'tag'=>$data['tag'])代码>但它没有运行,错过了db->where
上的
。这样就成功了:$this->db->where(数组('question'=>$data['question'],'tag'=>$data['tag'])代码>它发生了。我希望你没有感到困倦
$query = $this->db->get_where('extra_examples', array('question' => $data['question'],'tag' => $data['tag'] ));
if ($query->num_rows() > 0){
$this->db->where(array('question' => $data['question'],'tag' => $data['tag'] ))
$this->db->update('extra_examples', $data);
return ($this->db->affected_rows() > 0);
} else {
$this->db->insert('extra_examples', $data);
return $this->db->insert_id();
}