Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 代码点火器-如果查询结果返回行,如何更新数据库_Php_Mysql_Codeigniter_Activerecord - Fatal编程技术网

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

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-

我正在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]所在的行


我做错了什么?

我认为这一行有问题:

$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();
    }