关于 sql when case 批量更新的问题 (缺少 else 会改变全局的更新字段)
public function updateMultiData($data, $updateField='', $whereField = 'id'){
if(empty($data) || !trim($updateField)) {
$this->error = 'invalid parameters' ;
return false;
}
$sql = 'UPDATE ' . $this->getQuery()->getTable() . ' SET ';
$sp = '';
$upfields = explode(',', $updateField);
foreach($upfields as $field) {
$sql .= $sp . ' `' . $field . '`= CASE ' . $whereField;
foreach($data as $key => $val) {
$sql .= ' WHEN ' . $key . ' THEN "' . $val[$field] . '" ';
}
$sql .= ' ELSE `'.$field.'` END ';
$sp = ',';
}
return $this->execute($sql);
}
如图
本作品采用《CC 协议》,转载必须注明作者和本文链接
应该使用斜引号,不能使用"" , 容易产生错误