PHP实现更新中间关联表数据的两种方法


Posted in PHP onSeptember 01, 2014

本文以示例形式展示了PHP实现更新中间关联表数据的两种方法。分享给大家供大家参考之用。具体方法如下:

首先,中间关联表:这里的中间表只存表1的主键和表2的主键,即多对多的形式。
执行数据添加和删除为框架内部方法,不属于思路部分。

方法一:先全部删除旧数据,后添加新数据

$res = $this->classes->classEdit($id, $data);//修改主表数据
if($res)
{
//先删除关联表数据
$bool = $this->lesson_classes->lessonClassesDel($id);
if($bool)
{
//循环组装条件,添加数据
foreach($lesson_ids as $val)
{
$arr = array('class_id'=>$id, 'lesson_id'=>$val);//数据
$res = $this->lesson_classes->lessonClassesAdd($arr);  //执行添加
}
}
$this->show_tips('操作成功!');
}
else
{
$this->show_tips('操作失败!');
}

使用该方法弊端:大批量删除数据这块儿不安全,存在一定程度的安全隐患。

方法二:只添加需要的,只删要删的

//库中查出的旧数据:$arr_old (处理过的一维数组)
//提交过来的新数据:$arr_new (得到的一维数组)

$intersect = array_intersect($arr_old, $arr_new); //交集(需要保留的部分,不用处理)
$result_del = array_diff($arr_old, $intersect);//旧数据中需要删除的
$result_add = array_diff($arr_new, $intersect);//新数据中需要增加的

//添加新增数据
if($result_add && is_array($result_add))
{
  foreach($result_add as $val)
  {
    $data_add = array('class_id'=>$id, 'lesson_id'=>$val); //数据
    $bool_add = $this->lesson_classes->lessonClassesAdd($data_add);//执行添加
  }
}

//删除需要清除的数据
if($result_del && is_array($result_del))
{
  foreach($result_del as $val)
  {
    $bool_del = $this->lesson_classes->lessonClassesDel($id, $val); //执行删除
  }
}
if($bool_add && $bool_del)
{
$this->show_tips('操作成功!');
}
else
{
$this->show_tips('操作失败!');
}

该方法特点:有针对性的添加数据和删除数据,较第一种方法,安全性高

希望本文所述对大家的PHP程序设计有所帮助。

PHP 相关文章推荐
PHP编程之高级技巧——利用Mysql函数
Oct 09 PHP
用PHP生成html分页列表的代码
Mar 18 PHP
php实现文件下载更能介绍
Nov 23 PHP
php递归法读取目录及文件的方法
Jan 30 PHP
WordPress中制作导航菜单的PHP核心方法讲解
Dec 11 PHP
PHP中ajax无刷新上传图片与图片下载功能
Feb 21 PHP
PHP正则匹配操作简单示例【preg_match_all应用】
Jul 10 PHP
Yii2.0使用阿里云OSS的SDK上传图片、下载、删除图片示例
Sep 20 PHP
PHP集成环境XAMPP的安装与配置
Nov 13 PHP
PHP pthreads v3下的Volatile简介与使用方法示例
Feb 21 PHP
XAMPP升级PHP版本实现步骤解析
Sep 04 PHP
PHP设计模式(观察者模式)
Jul 07 PHP
重新认识php array_merge函数
Aug 31 #PHP
浅析PHP中strlen和mb_strlen的区别
Aug 31 #PHP
PHP提示Deprecated: mysql_connect(): The mysql extension is deprecated的解决方法
Aug 28 #PHP
PHP实现数组递归转义的方法
Aug 28 #PHP
PHP之autoload运行机制实例分析
Aug 28 #PHP
php+MySQL判断update语句是否执行成功的方法
Aug 28 #PHP
PHP反射机制用法实例
Aug 28 #PHP
You might like
php截取中文字符串不乱码的方法
2013/12/25 PHP
微信支付开发维权通知实例
2016/07/12 PHP
PHP实现简易blog的制作
2016/10/24 PHP
PHP简单实现解析xml为数组的方法
2018/05/02 PHP
php tpl模板引擎定义与使用示例
2019/08/09 PHP
YII2框架中behavior行为的理解与使用方法示例
2020/03/13 PHP
关于取不到由location.href提交而来的上级页面地址的解决办法
2009/07/30 Javascript
MC Dialog js弹出层 完美兼容多浏览器(5.6更新)
2010/05/06 Javascript
jQuery动态地获取系统时间实现代码
2013/05/24 Javascript
js用正则表达式来验证表单(比较齐全的资源)
2013/11/17 Javascript
JavaScript验证图片类型(扩展名)的函数分享
2014/05/05 Javascript
js/jquery判断浏览器的方法小结
2014/09/02 Javascript
javascript实现微信分享
2014/12/23 Javascript
详解JavaScript函数对象
2015/11/15 Javascript
jQuery 获取遍历获取table中每一个tr中的第一个td的方法
2016/10/05 Javascript
Bootstrap table使用方法详细介绍
2016/12/09 Javascript
JS中的算法与数据结构之字典(Dictionary)实例详解
2019/08/20 Javascript
JavaScript实现多层颜色选项卡嵌套
2020/09/21 Javascript
JavaScript实现缓动动画
2020/11/25 Javascript
JavaScript Dom实现轮播图原理和实例
2021/02/19 Javascript
[04:41]2014DOTA2国际邀请赛 Liquid顺利突围晋级正赛
2014/07/09 DOTA
[48:24]完美世界DOTA2联赛PWL S3 Forest vs INK ICE 第一场 12.09
2020/12/12 DOTA
python使用multiprocessing模块实现带回调函数的异步调用方法
2015/04/18 Python
在Python中用keys()方法返回字典键的教程
2015/05/21 Python
django项目用higcharts统计最近七天文章点击量
2019/08/17 Python
Pycharm如何导入python文件及解决报错问题
2020/05/10 Python
python 读txt文件,按‘,’分割每行数据操作
2020/07/05 Python
使用CSS3中的calc()属性来以算式表达尺寸数值
2016/06/06 HTML / CSS
澳大利亚优质葡萄酒专家:Vintage Cellars
2019/01/08 全球购物
RUIFIER官网:英国奢侈高级珠宝品牌
2020/06/12 全球购物
巴西最大的玩具连锁店:Ri Happy
2020/06/17 全球购物
实习自荐信
2013/10/13 职场文书
中学生团员自我评价分享
2013/12/07 职场文书
优秀的导游求职信范文
2014/04/06 职场文书
纪律教育学习月活动总结
2014/08/27 职场文书
公司中层管理培训心得体会
2016/01/11 职场文书