如何在codeigniter中使用insert或replace

时间:2015-12-12 16:04:59

标签: php mysql codeigniter

 public function save($data, $id)
    {
      $this->db->insert OR REPLACE($this->table, $data);
      return $this->db->insert_id();
    }

如果数据不存在将插入其他数据存在将被替换

3 个答案:

答案 0 :(得分:1)

试试这个

  
    

检查 提交的唯一数据,以检查记录的存在位置

  
public function save($data, $id)
{
    $query = $this->db->query("SELECT * FROM table_name WHERE id = '{$data['id']}' ");
    $result = $query->result_array();
    $count = count($result);

    if (empty($count)) {

        $this->db->insert('mytable', $data); 
    }
    elseif ($count == 1) {
        $this->db->where('id', $data['id']);
        $this->db->update('mytable', $data); 
    }
}

答案 1 :(得分:1)

如果您正在使用CodeIgniter v3.0.x,那么您需要的只是 $this->db->replace(),因为它编译并执行REPLACE语句。 (关于REPLACE的MySQL文档)

诀窍是在$id数组中包含表格的关键字段(问题中为$data)。然后你只需要将一个参数传递给save()

 public function save($data)
  {
    $this->db->replace($this->table, $data);
    return $this->db->insert_id();
  }

我承认我不确定insert_id()会在update()被调用后返回任何内容。

答案 2 :(得分:0)

简写:

$db_action = !(empty)$this->db->get_where($this->table, array('id', $id)) ? $this->db->insert($this->table, $data) : $this->db->where('id', $id)->update($this->table, $data);