【问题标题】:code igniter - how to update the database if a query result returns rowscodeigniter - 如果查询结果返回行,如何更新数据库
【发布时间】:2015-11-20 23:31:00
【问题描述】:

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

我做错了什么?

【问题讨论】:

    标签: php mysql codeigniter activerecord


    【解决方案1】:
    $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();
        }
    

    【讨论】:

      【解决方案2】:

      我认为这条线有问题:

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

      【讨论】:

      • 我尝试在更新上方添加这一行:$this->db-where(array('question' => $data['question'],'tag' => $data['tag'] ) );,但没有成功
      • 哎呀,错过了db->where 上的>。所以这有效:$this->db->where(array('question' => $data['question'],'tag' => $data['tag'] ) );
      • 它发生了。我希望你没有感到困 :D :D
      猜你喜欢
      • 2011-12-25
      • 2012-02-07
      • 2011-04-09
      • 1970-01-01
      • 2010-09-22
      • 2012-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多