以下代码是PHP代码,由于出现错乱,所以借用java显示
class test { /** * 创建像这样的查询: "IN('a','b')"; * * @author wengxianhu * @created to 2013-05-27 * @param mix $item_list 列表数组或字符串,如果为字符串时,字符串只接受数字串 * @param string $field_name 字段名称 * @return void */ public function db_create_in($item_list, $field_name = '') { if (empty($item_list)) { return " ".$field_name . " IN ('') "; } else { if (!is_array($item_list)) { $item_list = explode(',', $item_list); foreach ($item_list as $k=>$v) { $item_list[$k] = intval($v); } } $item_list = array_unique($item_list); $item_list_tmp = ''; foreach ($item_list AS $item) { if ($item !== '') { $item_list_tmp .= $item_list_tmp ? ",'$item'" : "'$item'"; } } if (empty($item_list_tmp)) { return " ".$field_name . " IN ('') "; } else { return " ".$field_name . ' IN (' . $item_list_tmp . ') '; } } } /** * 拼接更新字段 * * @author wengxianhu * @created to 2013-05-27 * @param unknown $data 批量更新的数组 * @param string $index_key 主键值的字段名 * @return string */ public function _concatFields($data, $index_key) { if (empty($data)) { return ''; } $array_tmp = array(); $index_key_array = array(); if (!is_array(current($data))) { $data = array($data); } $tmp1 = ""; foreach (current($data) as $_v => $_k) { $tmp1 = $_v . '_temp'; ${$tmp1} = ""; if ($_v != $index_key) { ${$tmp1} .= " {$_v} = CASE {$index_key} "; } } reset($data); $tmp2 = ""; foreach ($data as $_k => $_v) { foreach ($_v as $_f => $_fv) { $tmp2 = $_f . '_temp'; ${$tmp2} .= "WHEN '{$_v[$index_key]}' THEN '" . addslashes(stripslashes($_fv)) . "' "; array_push($index_key_array, $_v[$index_key]); } } reset($data); $tmp3 = ""; foreach (current($data) as $_v => $_k) { $tmp3 = $_v . '_temp'; ${$tmp3} .= " END "; if ($_v != $index_key) { $array_tmp[$tmp3] = ${$tmp3}; } } $array_tmp[$index_key] = $this->db_create_in($index_key_array, $index_key); return $array_tmp; } /** * 拼接更新字段 * * @author wengxianhu * @created to 2013-05-27 * @param unknown $data 批量更新的数组 * @param string $index_key 主键值的字段名 * @return string */ public function _concatFields_old($data, $index_key) { if(empty($data)) { return ''; } $array_tmp = array(); $index_key_array = array(); if(!is_array(current($data))) { $data = array($data); } foreach (current($data) as $_v => $_k) { if($_v != $index_key) { ${$_v.'_temp'} .= " {$_v} = CASE {$index_key} "; } } reset($data); foreach ($data as $_k => $_v) { foreach ($_v as $_f => $_fv) { ${$_f.'_temp'} .= "WHEN '{$_v[$index_key]}' THEN '".addslashes(stripslashes($_fv))."' "; array_push($index_key_array, $_v[$index_key]); } } reset($data); foreach (current($data) as $_v => $_k) { if($_v != $index_key) { ${$_v.'_temp'} .= " END "; $array_tmp[$_v.'_temp'] = ${$_v.'_temp'}; } } $array_tmp[$index_key] = $this->db_create_in($index_key_array, $index_key); return $array_tmp; } /** * 获取更新的数据SQL * * @author wengxianhu * @created to 2013-05-27 * @param unknown $data 批量更新的数组 * @param string $index_key 主键值的字段名 * @return multitype: */ public function _getUpdateInfo($data, $index_key) { reset($data); $fields = array(); $conditions = array(); $fields_info = $this->_concatFields($data, $index_key); $conditions = $fields_info[$index_key]; unset($fields_info[$index_key]); $fields = implode(',', $fields_info); return compact('fields', 'conditions'); } /** * 批量更新数据 * * @author wengxianhu * @created to 2013-05-27 * @param unknown $set 批量更新的数组 * @param string $table 数据表名 * @param string $index_key 主键值的字段名 * @return void */ public function updateAll($set, $table, $index_key) { if(empty($set)) { return ''; } $update_info = $this->_getUpdateInfo($set, $index_key); $sql = "UPDATE {$table} SET {$update_info['fields']} WHERE {$update_info['conditions']}"; $this->query($sql,'execute'); //这里根据当前使用的系统修改 } } $goods = array( array('goods_id'=>2000,'cate_id'=>100,'name'=>'godos1'), array('goods_id'=>2001,'cate_id'=>101,'name'=>'godos2'), array('goods_id'=>2002,'cate_id'=>102,'name'=>'godos3'), ); // $goods = array('goods_id'=>2000,'cate_id'=>100,'name'=>'godos1'); $a = new test(); $a->updateAll($goods, 'ecm_goods', 'goods_id');
相关推荐
NULL 博文链接:https://itxiaohu.iteye.com/blog/1876794
主要介绍了Thinkphp批量更新数据的方法汇总的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
设计方法:同时提交多条表单记录,为每一条记录设置相同的文本域名称,然后在表单处理页中,通过for循环来读取提取表单提交的数据,最后以数据的形式将数据逐条添加到数据库中. 其中,应用一个count()函数来获取数组中元素...
实例227 使用聚集函数First或Last求数据表中第一条或最后一条记录 352 8.10 多表查询 354 实例228 使用select语句进行多表查询 354 实例229 使用表的别名 355 实例230 合并多个结果集 356 8.11 嵌套查询...
实例077 跳过数据输出中指定的记录 111 实例078 执行指定次数的循环 112 2.7 自定义函数 113 实例079 自定义函数截取中文字符串 113 实例080 公告标题的截取 114 实例081 论坛内容的简短输出 116 实例082 自定义函数...
实例077 跳过数据输出中指定的记录 111 实例078 执行指定次数的循环 112 2.7 自定义函数 113 实例079 自定义函数截取中文字符串 113 实例080 公告标题的截取 114 实例081 论坛内容的简短输出 116 实例082 自定义函数...
10.11 对前n条或后n条记录进行处理 10.12 以随机方式选择数据记录 10.13 全文索引 10.14 锁定 10.15 事务 第11章 访问权限与信息安全 11.1 简介 11.2 急救 11.3 访问控制机制的内部工作原理 ...
五指CMS本次系统主要更新一下内容(20150519) 1、php5.4以上环境,部分程序不能安装的问题。 五指CMS本次系统主要更新一下内容(20150518): − 支持php5.2、php5.3、php5.4、php5.5、php5.6!(推荐使用5.4或...
更新日志- XISE已经很久没有再更新,感谢大家的支持 ...智能的记录数据,急速百万条记录读取,百万级SHELL轻松管理 点击图片即可查看,无需下载 支持批量的导入与导出 更多功能细节请查看历史更新记录
下个版本将支持指定调用数据的条数。后台可以设置兑换所花费的积分类型和各种提示信息。 上传礼品图片自动生成前台缩略图。 上传礼品可以不上传图片。内置无图片功能。 每位会员兑换数量限制功能。 批量标记发货,...
16、提供多种灵活翻页方案,用户可设置每页记录条数、上/下页、前/后N页、输入数字跳转到指定页面等,提高海量数据翻页速度 17、提供丰富的建站常用VB、JS函数库 ★ 18、更多扩展功能: 添加、修改页面在保存信息前...
16、提供多种灵活翻页方案,用户可设置每页记录条数、上/下页、前/后N页、输入数字跳转到指定页面等,提高海量数据翻页速度 17、提供丰富的建站常用VB、JS函数库 ★ 18、更多扩展功能: 添加、修改页面在保存信息前...
备份数据库的界面增加每个数据表的功能介绍,让大家清楚知道哪个数据表是做什么用的. 29.增强完善后台在线修改模板风格功能,对常用的模板都做了功能解释说明.方便大家修改对应的模板 等等.... 官方网站:...
16、提供多种灵活翻页方案,用户可设置每页记录条数、上/下页、前/后N页、输入数字跳转到指定页面等,提高海量数据翻页速度 17、提供丰富的建站常用VB、JS函数库 ★ 18、更多扩展功能: 添加、修改页面在保存信息前...
10.11 对前n条或后n条记录进行处理 10.12 以随机方式选择数据记录 10.13 全文索引 10.14 锁定 10.15 事务 第11章 访问权限与信息安全 11.1 简介 11.2 急救 11.3 访问控制机制的内部工作...
16、提供多种灵活翻页方案,用户可设置每页记录条数、上/下页、前/后N页、输入数字跳转到指定页面等,提高海量数据翻页速度 17、提供丰富的建站常用VB、JS函数库 ★ 18、更多扩展功能: 添加、修改页面在保存信息前...
16、提供多种灵活翻页方案,用户可设置每页记录条数、上/下页、前/后N页、输入数字跳转到指定页面等,提高海量数据翻页速度 17、提供丰富的建站常用VB、JS函数库 ★ 18、更多扩展功能: 添加、修改页面在保存信息前...
16、提供多种灵活翻页方案,用户可设置每页记录条数、上/下页、前/后N页、输入数字跳转到指定页面等,提高海量数据翻页速度 17、提供丰富的建站常用VB、JS函数库 ★ 18、更多扩展功能: 添加、修改页面在保存信息前...