纵有疾风起
人生不言弃

thinkphp 批量更新

/**
* 批量更新数据
* @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 批量更新
分享到: 生成海报

评论 抢沙发

评论前必须登录!

立即登录