我在模型中具有更新功能,我的控制器将其称为
if($_POST)
{
$this->User_model->update('user_about',$_POST,$this->session->userdata['id']);
}
采用三个参数:表名称,帖子数据和用户ID。该函数在模型中定义为
public function update($table,$data,$id)
{
$row=$this->db->select('*')->from($table)->WHERE('user_id',$id)->row();
if($row)
{
$this->db->WHERE('user_id',$id)->UPDATE($table,$data);
}
else
{
$data['user_id']=$id;
$this->db->insert($table,$data);
}
}
我在这里做的是检查特定用户的记录是否不存在,否则会插入更新。就像魅力
一样问题
有没有办法跳过条件块?查询构建器中是否有任何执行检查本身的规定?
这是我在编程中一直使用的重复函数的自定义通用插入物。
public function updateOnDuplicate($table, $data )
{
if (empty($table) || empty($data)) return false;
$duplicate_data = array();
foreach($data AS $key => $value) {
$duplicate_data[] = sprintf("%s='%s'", $key, $value);
}
$sql = sprintf("%s ON DUPLICATE KEY UPDATE %s", $this->db->insert_string($table, $data), implode(',', $duplicate_data));
$this->db->query($sql);
return $this->db->insert_id();
}
您可以在模型中使用上述功能,并在控制器中调用它。如果发生重复,该函数将更新值。查看以下博客文章,如果您需要详细说明,请说明更新和插入的通用代码签名函数。