时间: 2019-07-5|344次围观|0 条评论

/**
* 批量更新数据
* @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;
}

本博客所有文章如无特别注明均为原创。
复制或转载请以超链接形式注明转自起风了,原文地址《thinkphp 批量更新
   

还没有人抢沙发呢~