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生成随机密码的三种方法小结
Sep 04 PHP
php 变量未定义等错误的解决方法
Jan 12 PHP
php Ubb代码编辑器函数代码
Jul 05 PHP
php使用curl访问https示例分享
Jan 17 PHP
分享下页面关键字抓取www.icbase.com站点代码(带asp.net参数的)
Jan 30 PHP
php按百分比生成缩略图的代码分享
May 10 PHP
php中fsockopen用法实例
Jan 05 PHP
php读取文件内容到数组的方法
Mar 16 PHP
PHP中Session和Cookie是如何操作的
Oct 10 PHP
PHP实现生成带背景的图形验证码功能
Oct 03 PHP
ThinkPHP使用getlist方法实现数据搜索功能示例
May 08 PHP
浅谈PHP中pack、unpack的详细用法
Mar 12 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 远程关机操作的代码
2008/12/05 PHP
如何通过Linux命令行使用和运行PHP脚本
2015/07/29 PHP
JQuery each()函数如何优化循环DOM结构的性能
2012/12/10 Javascript
使用jquery的ajax需要注意的地方dataType的设置
2013/08/12 Javascript
javascript预加载图片、css、js的方法示例介绍
2013/10/14 Javascript
js设置文本框中焦点位置在最后的示例代码(简单实用)
2014/03/04 Javascript
基于RequireJS和JQuery的模块化编程日常问题解析
2016/04/14 Javascript
jQuery中设置form表单中action值的实现方法
2016/05/25 Javascript
实例解析Array和String方法
2016/12/14 Javascript
Vue.js双向绑定操作技巧(初级入门)
2016/12/27 Javascript
JavaScript数据结构中栈的应用之表达式求值问题详解
2017/04/11 Javascript
NodeJs生成sitemap站点地图的方法示例
2019/06/11 NodeJs
微信小程序iBeacon测距及稳定程序的实现解析
2019/07/31 Javascript
微信小程序 高德地图路线规划实现过程详解
2019/08/05 Javascript
vue-router路由模式详解(小结)
2019/08/26 Javascript
解决layui批量传值到后台操作时出现传值为空的问题
2019/09/28 Javascript
JQuery插件tablesorter表格排序实现过程解析
2020/05/28 jQuery
[43:49]LGD vs CHAOS 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
python连接mysql调用存储过程示例
2014/03/05 Python
使用python读取.text文件特定行的数据方法
2019/01/28 Python
详解Python字符串切片
2019/05/20 Python
python使用百度文字识别功能方法详解
2019/07/23 Python
一篇文章搞定Python操作文件与目录
2019/08/13 Python
Python 实现一个手机号码获取妹子名字的功能
2019/09/25 Python
python3 实现函数写文件路径的正确方法
2019/11/27 Python
Django 设置多环境配置文件载入问题
2020/02/25 Python
Python使用Pyqt5实现简易浏览器(最新版本测试过)
2020/04/27 Python
如何用Python 实现全连接神经网络(Multi-layer Perceptron)
2020/10/15 Python
澳大利亚儿童精品仓库:Goo & Co.
2019/06/20 全球购物
Wedgwood英国官方网站:英式精致骨瓷餐具、礼品与生活精品,源于1759年
2019/09/02 全球购物
Java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类?
2012/05/30 面试题
经济管理专业毕业生推荐信
2013/11/11 职场文书
学校开学标语
2014/10/06 职场文书
四风专项整治工作情况汇报
2014/10/28 职场文书
十岁生日答谢词
2015/01/05 职场文书
《七月的天山》教学反思
2016/02/19 职场文书