public function save($data, $id)
{
$this->db->insert OR REPLACE($this->table, $data);
return $this->db->insert_id();
}
如果数据不存在将插入其他数据存在将被替换
答案 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);