/**
* 批量更新数据
* @param string $table_name
* @param array $data
* @param string $field
* @return bool|false|int
*/
function db_batch_update($table_name = '', $data = array(), $field = '',$sql='') {
if (!$table_name || !$data || !$field) {
return false;
} else {
$sql = $sql;//$sql= UPDATE users(表名)
}
$con = array();
$con_sql = array();
$fields = array();
foreach ($data as $key => $value) {
$x = 0;
foreach ($value as $k => $v) {
if ($k != $field && !$con[$x] && $x == 0) {
$con[$x] = " set {$k} = (CASE {$field} ";
} elseif ($k != $field && !$con[$x] && $x > 0) {
$con[$x] = " {$k} = (CASE {$field} ";
}
if ($k != $field) {
$temp = $value[$field];
if(strpos($v,'+')){
$con_sql[$x].= " WHEN '{$temp}' THEN {$v} ";
}else{
$con_sql[$x].= " WHEN '{$temp}' THEN '{$v}' ";
}
$x++;
}
}
$temp = $value[$field];
if (!in_array($temp, $fields)) {
$fields[] = $temp;
}
}
$num = count($con) - 1;
foreach ($con as $key => $value) {
foreach ($con_sql as $k => $v) {
if ($k == $key && $key < $num) {
$sql.=$value . $v . ' end),';
} elseif ($k == $key && $key == $num) {
$sql.=$value . $v . ' end)';
}
}
}
$str = implode(',', $fields);
$sql.=" where {$field} in({$str})";
$res = M($table_name)->execute($sql);
return $res;
}
还没有人抢沙发呢~