我有这个功能可以执行以下操作
function save($owner,$data){
///$owner='00002';$data=[['type1','value1'],['type','value2']];
///check if this $data is already in database, if +ve and != then update else insert
$sel='';$rs=[];$ins=FALSE;$up=FALSE;$end=[];
$this->db->select('id,type,value')->where('owner',$owner)
//building WHERE statment
foreach(array_keys($data)as $k)
$sel.="type='$k' OR ";
$this->db->where("(".trim($sel,' OR ').")");
$r=$this->db->get('settings');
if($r->num_rows() > 0)//building reference array
foreach($r->result() as $r)$rs[$r->type]=$r;
foreach($data as $t=>$v)
{
if(isset($rs[$t])){//case input already in db-->update
if(!$v || $v!=$rs[$t]->value)$up[]=['id'=>$rs[$t]->id,'value'=>$v,'archived'=>0];
}else{//case not-->insert
if($v)$ins[]=['type'=>$t,'value'=>$v,'owner'=>$owner];
}
}
$this->db->insert_batch('settings',$ins);
$this->db->update_batch('settings',$up,'id');
}
现在我如何确认 insert_batch 和 update_patch 都有效以及如何返回更新了多少字段.. 我尝试使用 db->affected_rows() 但由于我使用 2 个语句,因此它的返回不准确。
有任何想法吗?