切勿在循環中,如(while、foreach、for) 出現(select、update、insert、delete)語句,e.g. : 1).批量更新數據update 錯誤: if(!empty($data)){ foreach($dataas $k=>$val){ $query=" UPDATE ".TBL_CONFIG."SET config_value='$val'WHERE config_name='$k'"; DB()->ADM->execute($query); } } 正確: if(!empty($data)){ $ids= ''; $query= "UPDATE ".TBL_CONFIG." SET config_value = CASE config_name"; foreach($data as $k => $val) { if($ids!=''){$ids.=",";}$ids.="'$k'"; $query .= sprintf("WHEN '%s' THEN '%s'", $k, $val); } $query.= "END WHERE config_name IN ($ids)"; DB()->ADM->execute($query); } 2).批理插入數據insert 錯誤: if(!empty($data)){ foreach($data as $k=>$val){ $query=" INSERTINTO ".TBL_CONFIG."(config_value,config_name)VALUES('$val','$k')"; DB()->ADM->execute($query); } } 正確: if(!empty($data)){ $query=" INSERT INTO ".TBL_CONFIG." (config_value,config_name)VALUES"; $val_arr=array(); foreach($data as $k=>$val){ $val_arr[]= " ('$val','$k')"; } if(!empty($val_arr)){ $query.= implode(',', $val_arr); DB()->ADM->execute($query); } } 3).批量查詢select 錯誤: if(!empty($data)){ foreach($data as $k=>$val){ $query="SELECTconfig_valueFROM ".TBL_CONFIG." WHERE config_name='$k'"; $res=DB()->ADM->execute($query); $out= DB()->ADM->arrays($res); $data[$k][‘config_value’]= $out['config_value']; } print_r($data); } 正確: if(!empty($data)){ $keys= array_keys($data);$keys=implode(",", $keys); $query="SELECT config_name,config_valueFROM ".TBL_CONFIG." WHERE config_name IN($keys)"; $res=DB()->ADM->execute($query); while($out=DB()->ADM->arrays($res)){ $data[$out [‘config_name’]][‘config_value’]=$out[‘config_value’]; } print_r($data); } 4).批理刪除delete 錯誤: if(!empty($data)){ foreach($data as $k=>$val){ $query=" DELETE FROM".TBL_CONFIG." WHERE config_name='$k'"; $res=DB()->ADM->execute($query); } print_r($data); } 正確: if(!empty($data)){ $keys=array_keys($data);$keys=implode(",", $keys); $query="DELETE FROM ".TBL_CONFIG."WHERE config_name IN($keys)"; $res=DB()->ADM->execute($query); print_r($data); }