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学习之数组值的操作
Apr 17 PHP
PHP怎么实现网站保存快捷方式方便用户随时浏览
Aug 15 PHP
php 中文字符串首字母的获取函数分享
Nov 04 PHP
php判断电脑访问、手机访问的例子
May 10 PHP
php下foreach提示Warning:Invalid argument supplied for foreach()的解决方法
Nov 11 PHP
php的闭包(Closure)匿名函数详解
Feb 22 PHP
php微信公众账号开发之前五个坑(一)
Sep 18 PHP
PHP实现微信JS-SDK接口选择相册及拍照并上传的方法
Dec 05 PHP
由php中字符offset特征造成的绕过漏洞详解
Jul 07 PHP
PHP字符串中抽取子串操作实例分析
Jun 22 PHP
PHP商品秒杀问题解决方案实例详解【mysql与redis】
Jul 22 PHP
php png失真的原因及解决办法
Oct 24 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
使用Apache的htaccess防止图片被盗链的解决方法
2013/04/27 PHP
thinkphp实现数组分页示例
2014/04/13 PHP
常见PHP数据库解决方案分析介绍
2015/09/24 PHP
PHP基于正则批量替换Img中src内容实现获取缩略图的功能示例
2017/06/07 PHP
php脚本守护进程原理与实现方法详解
2017/07/20 PHP
PHP基于swoole多进程操作示例
2019/08/12 PHP
改版了网上的一个js操作userdata
2007/04/27 Javascript
用js实现随机返回数组的一个元素
2007/08/13 Javascript
Mootools 1.2教程 事件处理
2009/09/15 Javascript
用Javascript同时提交多个Web表单的方法
2009/12/26 Javascript
js简单实现让文本框内容逐个字的显示出来
2013/10/22 Javascript
JavaScript的Date()方法使用详解
2015/06/09 Javascript
学习JavaScript设计模式之状态模式
2016/01/08 Javascript
JS结合bootstrap实现基本的增删改查功能
2016/07/22 Javascript
详解JS数组Reduce()方法详解及高级技巧
2017/08/18 Javascript
在 vue-cli v3.0 中使用 SCSS/SASS的方法
2018/06/14 Javascript
解决LayUI表单获取不到data的问题
2018/08/20 Javascript
react-router4按需加载(踩坑填坑)
2019/01/06 Javascript
Angular实现svg和png图片下载实现
2019/05/05 Javascript
让 babel webpack vue 配置文件支持智能提示的方法
2019/06/22 Javascript
layui table 列宽百分比显示的实现方法
2019/09/28 Javascript
JavaScript本地储存:localStorage、sessionStorage、cookie的使用
2020/10/13 Javascript
Python 基于FIR实现Hilbert滤波器求信号包络详解
2020/02/26 Python
Python实现Word表格转成Excel表格的示例代码
2020/04/16 Python
python Xpath语法的使用
2020/11/26 Python
python中str内置函数用法总结
2020/12/27 Python
浅谈Python xlwings 读取Excel文件的正确姿势
2021/02/26 Python
pip install命令安装扩展库整理
2021/03/02 Python
春秋航空官方网站:Spring Airlines
2017/09/27 全球购物
阿里健康官方海外旗舰店:阿里健康国际自营
2017/11/24 全球购物
环境工程大学生自荐信
2013/10/21 职场文书
党员自我评价分享
2013/12/13 职场文书
幼儿园六一活动总结
2014/08/27 职场文书
高中生学习计划书
2014/09/15 职场文书
孔繁森观后感
2015/06/10 职场文书
化工生产实习心得体会
2016/01/22 职场文书