使用mysql 自带的语句构建 多个更新条件 批量更新
来源:互联网 发布:歌莉娅淘宝官方旗舰店 编辑:程序博客网 时间:2024/05/17 12:56
使用mysql 自带的语句构建 多个更新条件 批量更新
/** * 批量修改 * @param string $table_name 表名 * @param array $data 提交的数据 array * @param string $field 修改的条件字段 支持多条件修改 可用逗号分隔,或者数组 * @return bool|int 返回修改的条数 */ public static function batch_update($table_name = '', $data = [], $field = '') { if (!$table_name || !$data || !$field) { return false; } else { $sql = 'UPDATE ' . $table_name; } $con = []; $con_sql = []; $fields = []; if (!is_array($field)) { $field = explode(',', $field); } foreach ($data as $key => $value) { $x = 0; foreach ($value as $k => $v) { $con_sql[$x] = isset($con_sql[$x]) ? $con_sql[$x] : ''; if (!in_array($k, $field) && !isset($con[$x]) && $x == 0) { $con[$x] = " SET `" . $k . "` = (CASE "; $con_sql[$x] = ''; } elseif (!in_array($k, $field) && !isset($con[$x]) && $x > 0) { $con[$x] = " `" . $k . "` = (CASE "; } if (!in_array($k, $field)) { $con_sql[$x] .= " WHEN "; foreach ($field as $i => $val) { $temp = $value[$val]; if ($i > 0) { $con_sql[$x] .= " AND `" . $val . "` = " . $temp; } else { $con_sql[$x] .= " `" . $val . "` = " . $temp; } } $con_sql[$x] .= " THEN '" . $v . "'"; $x++; } } foreach ($field as $fk => $fv) { $fields[$fv] = isset($fields[$fv]) ? $fields[$fv] : []; $temp = $value[$fv]; if (!in_array($temp, $fields[$fv])) { $fields[$fv][] = $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)'; } } } $sql .= " WHERE "; $i = 0; foreach ($fields as $fsk => $fsv) { if ($i > 0) { $sql .= " AND " . $fsk . " IN (" . implode(',', $fsv) . ")"; } else { $sql .= $fsk . " IN (" . implode(',', $fsv) . ")"; } $i++; } $res = Db::name($table_name)->execute($sql); return $res; }
最后返回的$sql就是组合后的批量修改的sql语句,上文中用 thinkphp 5 提交sql,并返回处理的条数,可以根据自己情况改变改代码
$res = Db::name($table_name)->execute($sql);return $res;
阅读全文
0 0
- 使用mysql 自带的语句构建 多个更新条件 批量更新
- 使用mysql 自带的语句构建批量更新
- MySQL批量更新语句
- MySql 批量更新语句
- mysql批量插入,更新的sql语句
- mysql批量更新的sql语句
- mysql语句:批量更新多条记录
- mysql语句:批量更新多条记录的不同
- mysql语句:批量更新多条记录的不同值
- mysql语句:批量更新多条记录的不同值
- mysql语句:批量更新多条记录的不同值
- mysql语句:批量更新多条记录的不同值
- mysql语句:批量更新多条记录的不同值
- mysql语句:批量更新多条记录的不同值
- mysql批量更新语句优化
- DOS 批量对多个MYSQL的DB进行更新
- Mybatis多条件批量更新
- Mysql根据条件批量更新动态数据
- BadgeView
- 国内外物联网平台特点以及开发语言整理
- LInux:shell 命令:字符串截取
- Unity性能优化—声音优化
- Android——ARGB的透明度A的16进制参考表
- 使用mysql 自带的语句构建 多个更新条件 批量更新
- [BZOJ3377]geng4512膜你题1:子集
- lemon oa 自己学习
- PASCAL VOC2012目标检测权威评测夺冠之道
- AS下如何生成自定义的.jks签名文件, 以及如何生成数字签名
- [计数][容斥] LOJ#6065 || BZOJ4927 && 2017 山东一轮集训 Day3. 第一题
- 03. JVM性能监控&故障处理工具
- 给table增加水平滚动条
- 数据中心网络虚拟化