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中调用JAVA
Oct 09 PHP
PHP 和 MySQL 开发的 8 个技巧
Oct 09 PHP
PHP 文件上传源码分析(RFC1867)
Oct 30 PHP
php visitFile()遍历指定文件夹函数
Aug 21 PHP
php页面缓存方法小结
Jan 10 PHP
php编写批量生成不重复的卡号密码代码
May 14 PHP
Discuz!X中SESSION机制实例详解
Sep 23 PHP
php遍历解析xml字符串的方法
May 05 PHP
thinkphp框架实现删除和批量删除
Jun 29 PHP
php解析base64数据生成图片的方法
Dec 06 PHP
Ajax请求PHP后台接口返回信息的实例代码
Aug 21 PHP
Laravel框架实现抢红包功能示例
Oct 31 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循环获取GET和POST值的代码
2008/04/09 PHP
Php中使用Select 查询语句的实例
2014/02/19 PHP
jquery+php+ajax显示上传进度的多图片上传并生成缩略图代码
2014/10/15 PHP
php绘图之在图片上写中文和英文的方法
2015/01/24 PHP
PHP下载远程文件到本地存储的方法
2015/03/24 PHP
php文档工具PHP Documentor安装与使用方法
2016/01/25 PHP
PHP入门教程之数学运算技巧总结
2016/09/11 PHP
jQuery的强大选择器小结
2009/12/27 Javascript
Javascript中valueOf与toString区别浅析
2013/03/19 Javascript
JavaScript 学习笔记之数据类型
2015/01/14 Javascript
js实现iGoogleDivDrag模块拖动层拖动特效的方法
2015/03/04 Javascript
简介AngularJS的视图功能应用
2015/06/17 Javascript
使用JavaScript实现连续滚动字幕效果的方法
2015/07/07 Javascript
简单学习JavaScript中的for语句循环结构
2015/11/10 Javascript
原生js实现autocomplete插件
2016/04/14 Javascript
详解使用PM2管理nodejs进程
2017/10/24 NodeJs
js判断节假日实例代码
2017/12/27 Javascript
vue 动态改变静态图片以及请求网络图片的实现方法
2018/02/07 Javascript
浅谈vux之x-input使用以及源码解读
2018/11/04 Javascript
基于JS开发微信网页录音功能的实例代码
2019/04/30 Javascript
javascript设计模式 ? 享元模式原理与用法实例分析
2020/04/15 Javascript
Node.js API详解之 timer模块用法实例分析
2020/05/07 Javascript
如何阻止移动端浏览器点击图片浏览
2020/08/29 Javascript
Python3实现建造者模式的示例代码
2020/06/28 Python
Linux常见面试题
2013/03/18 面试题
英语专业学子个人的自我评价
2013/10/02 职场文书
高中政治教学反思
2014/01/18 职场文书
保安的辞职报告怎么写
2014/01/20 职场文书
一年级小学生评语
2014/04/22 职场文书
应届生自荐信
2014/06/30 职场文书
幼儿教师2014年度工作总结
2014/12/16 职场文书
珍爱生命主题班会
2015/08/13 职场文书
小学生反邪教心得体会
2016/01/15 职场文书
《将心比心》教学反思
2016/02/23 职场文书
Jsonp劫持学习
2021/04/01 PHP
JavaScript实现优先级队列
2021/12/06 Javascript