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 相关文章推荐
main.php
Dec 09 PHP
php 5.3.5安装memcache注意事项小结
Apr 12 PHP
修改PHP的memory_limit限制的方法分享
Feb 21 PHP
php中DOMElement操作xml文档实例演示
Mar 26 PHP
php实现分页工具类分享
Jan 09 PHP
PHP 函数call_user_func和call_user_func_array用法详解
Mar 02 PHP
老司机传授Ubuntu下Apache+PHP+MySQL环境搭建攻略
Mar 20 PHP
Yii2验证器(Validator)用法分析
Jul 23 PHP
Thinkphp框架开发移动端接口(2)
Aug 18 PHP
Yii2.0中使用js异步删除示例
Mar 10 PHP
PHP chunk_split()函数讲解
Feb 12 PHP
PHP创建对象的六种方式实例总结
Jun 27 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
轻松修复Discuz!数据库
2008/05/03 PHP
PHP 反射机制实现动态代理的代码
2008/10/22 PHP
apache配置虚拟主机的方法详解
2013/06/17 PHP
php闭包中使用use声明变量的作用域实例分析
2018/08/09 PHP
如何在PHP中使用数组
2020/06/09 PHP
PHP文件打开关闭及读写操作示例解析
2020/08/06 PHP
jquery中prop()方法和attr()方法的区别浅析
2013/09/06 Javascript
对JavaScript的全文搜索实现相关度评分的功能的方法
2015/06/24 Javascript
Javascript获取background属性中url的值
2016/10/17 Javascript
JavaScript中setTimeout的那些事儿
2016/11/14 Javascript
微信小程序wx:for和wx:for-item的用法详解
2018/04/01 Javascript
JS浅拷贝和深拷贝原理与实现方法分析
2019/02/28 Javascript
微信小程序与公众号卡券/会员打通的问题
2019/07/25 Javascript
小程序如何获取多个formId实现详解
2019/09/20 Javascript
vue子传父关于.sync与$emit的实现
2019/11/05 Javascript
在 Vue 中编写 SVG 图标组件的方法
2020/02/24 Javascript
JavaScript实现电灯开关小案例
2020/03/30 Javascript
Json实现传值到后台代码实例
2020/06/30 Javascript
详解vue 中 scoped 样式作用域的规则
2020/09/14 Javascript
js实现简易拖拽的示例
2020/10/26 Javascript
Python Tkinter简单布局实例教程
2014/09/03 Python
python中安装Scrapy模块依赖包汇总
2017/07/02 Python
python hash每次调用结果不同的原因
2019/11/21 Python
Python中logger日志模块详解
2020/08/04 Python
python 中的9个实用技巧,助你提高开发效率
2020/08/30 Python
最新PyCharm 2020.2.3永久激活码(亲测有效)
2020/11/26 Python
详解Python中openpyxl模块基本用法
2021/02/23 Python
HTML5实现直播间评论滚动效果的代码
2020/05/27 HTML / CSS
挪威户外活动服装和装备购物网站:Bergfreunde挪威
2016/10/20 全球购物
阿姆斯特丹杜莎夫人蜡像馆官方网站:Madame Tussauds Amsterdam
2019/03/12 全球购物
Notino匈牙利:购买香水和化妆品
2019/04/12 全球购物
新加坡一家在线男士皮具品牌:Faire Leather Co.
2019/12/01 全球购物
《路旁的橡树》教学反思
2014/04/07 职场文书
毕业生代领毕业材料的授权委托书
2014/09/29 职场文书
2015年打非治违工作总结
2015/04/02 职场文书
NodeJs内存占用过高的排查实战记录
2021/05/10 NodeJs