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中执行系统外部命令
Oct 09 PHP
PHP 编程请选择正确的文本编辑软件
Dec 21 PHP
简单分析ucenter 会员同步登录通信原理
Aug 25 PHP
php判断文件上传类型及过滤不安全数据的方法
Dec 17 PHP
php使用Cookie控制访问授权的方法
Jan 21 PHP
php文件上传后端处理小技巧
May 22 PHP
一个简单的php路由类
May 29 PHP
PHP 7.0新增加的特性介绍
Jun 08 PHP
Laravel核心解读之异常处理的实践过程
Feb 24 PHP
java解析json方法总结
May 16 PHP
thinkphp框架表单数组实现图片批量上传功能示例
Apr 04 PHP
php操作redis常见方法示例【key与value操作】
Apr 14 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入门速成(2)
2006/10/09 PHP
vBulletin HACK----显示话题大小和打开新窗口于论坛索引页
2006/10/09 PHP
php smarty的预保留变量总结
2008/12/04 PHP
PHP中return 和 exit 、break和contiue 区别与用法
2012/04/09 PHP
PHP+Javascript实现在线拍照功能实例
2015/07/18 PHP
PHP实现数据分页显示的简单实例
2016/05/26 PHP
php安装php_rar扩展实现rar文件读取和解压的方法
2016/11/17 PHP
让你的网站可编辑的实现js代码
2009/10/19 Javascript
firebug的一个有趣现象介绍
2011/11/30 Javascript
js闭包的用途详解
2014/11/09 Javascript
Js使用WScript.Shell对象执行.bat文件和cmd命令
2014/12/18 Javascript
Javascript实现计算个人所得税
2015/05/10 Javascript
javascript移动开发中touch触摸事件详解
2016/03/18 Javascript
js基于cookie记录来宾姓名的方法
2016/07/19 Javascript
AngularJS实现星星等级评分功能
2016/09/24 Javascript
微信小程序实现给循环列表添加点击样式实例
2017/04/26 Javascript
详解React Native开源时间日期选择器组件(react-native-datetime)
2017/09/13 Javascript
详解react内联样式使用webpack将px转rem
2018/09/13 Javascript
javascript获取元素的计算样式
2019/05/24 Javascript
Python使用稀疏矩阵节省内存实例
2014/06/27 Python
寻找网站后台地址的python脚本
2014/09/01 Python
Python中列表的一些基本操作知识汇总
2015/05/20 Python
Python实现发送QQ邮件的封装
2017/07/14 Python
python模块之sys模块和序列化模块(实例讲解)
2017/09/13 Python
在mac下查找python包存放路径site-packages的实现方法
2018/11/06 Python
解决django 新增加用户信息出现错误的问题
2019/07/28 Python
Python实现socket非阻塞通讯功能示例
2019/11/06 Python
给定一个时间点,希望得到其他时间点
2013/11/07 面试题
中专生职业生涯规划书范文
2013/12/29 职场文书
招聘单位介绍信
2014/01/14 职场文书
销售会计岗位职责
2014/03/15 职场文书
团支部推优材料
2014/05/21 职场文书
物理学专业求职信
2014/07/04 职场文书
员工安全责任书范本
2014/07/24 职场文书
大学学生会主席竞选稿怎么写?
2019/08/19 职场文书
spring cloud 配置中心客户端启动遇到的问题
2021/09/25 Java/Android