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 相关文章推荐
玩转虚拟域名◎+ .
Oct 09 PHP
phpmyadmin的#1251问题
Nov 25 PHP
PHP 加密解密内部算法
Apr 22 PHP
PHP弹出提示框并跳转到新页面即重定向到新页面
Jan 24 PHP
服务器上配置PHP运行环境教程
Feb 12 PHP
PHP实现获取中英文首字母
Jun 19 PHP
Symfony2联合查询实现方法
Mar 18 PHP
php版微信公众号接口实现发红包的方法
Oct 14 PHP
老生常谈ThinkPHP中的行为扩展和插件(推荐)
May 05 PHP
php二维码生成以及下载实现
Sep 28 PHP
针对PHP开发安全问题的相关总结
Mar 22 PHP
ThinkPHP框架整合微信支付之Native 扫码支付模式一图文详解
Apr 09 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中MVC模式的模板引擎开发经验分享
2011/03/23 PHP
PHP中使用数组指针函数操作数组示例
2014/11/19 PHP
四种php中webservice实现的简单架构方法及实例
2015/02/03 PHP
php文件压缩之PHPZip类用法实例
2015/06/18 PHP
Laravel学习教程之路由模块
2017/08/18 PHP
thinkPHP5框架中widget的功能与用法详解
2018/06/11 PHP
jQuery+PHP实现动态数字展示特效
2015/03/14 Javascript
jquery.validate使用时遇到的问题
2015/05/25 Javascript
javascript实现列表切换效果
2016/05/02 Javascript
jQuery ajax全局函数处理session过期后的ajax跳转问题
2016/06/03 Javascript
浅谈JavaScript事件绑定的常用方法及其优缺点分析
2016/11/01 Javascript
SelecT下拉框选中和取值的解决方法
2016/11/22 Javascript
JS实现的简单四则运算计算器功能示例
2017/09/27 Javascript
使用vue-cli+webpack搭建vue开发环境的方法
2017/12/22 Javascript
Vue中Table组件Select的勾选和取消勾选事件详解
2019/03/19 Javascript
小程序实现背景音乐播放和暂停
2020/06/19 Javascript
Node.js web 应用如何封装到Docker容器中
2020/09/01 Javascript
js+canvas实现刮刮奖功能
2020/09/13 Javascript
[37:22]DOTA2上海特级锦标赛D组资格赛#2 Liquid VS VP第一局
2016/02/28 DOTA
使用Python中的greenlet包实现并发编程的入门教程
2015/04/16 Python
python xml.etree.ElementTree遍历xml所有节点实例详解
2016/12/04 Python
浅谈Python中的可变对象和不可变对象
2017/07/07 Python
通过Python实现自动填写调查问卷
2017/09/06 Python
python实现扫描日志关键字的示例
2018/04/28 Python
python 统计列表中不同元素的数量方法
2018/06/29 Python
python整合ffmpeg实现视频文件的批量转换
2019/05/31 Python
python2使用bs4爬取腾讯社招过程解析
2019/08/14 Python
python基于celery实现异步任务周期任务定时任务
2019/12/30 Python
毕业生求职自荐信怎么写
2014/01/08 职场文书
护理职业生涯规划书
2014/01/24 职场文书
六一儿童节标语
2014/10/08 职场文书
学校机关党总支领导班子整改工作方案
2014/10/26 职场文书
宝宝满月宴答谢词
2015/09/30 职场文书
描写九月优美句子(39条)
2019/09/11 职场文书
教你做个可爱的css滑动导航条
2021/06/15 HTML / CSS
【TED出品】天梯非主流开心游1700 划水骑士
2022/03/31 魔兽争霸