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初学者头疼问题总结
Jul 08 PHP
解决phpmyadmin中文乱码问题。。。
Jan 18 PHP
用PHP的ob_start();控制您的浏览器cache!
Feb 14 PHP
mysql 全文搜索 技巧
Apr 27 PHP
php异常:Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE  eval()'d code error
May 19 PHP
封装ThinkPHP的一个文件上传方法实例
Oct 31 PHP
PHP使用in_array函数检查数组中是否存在某个值
Mar 25 PHP
CI框架(CodeIgniter)实现的数据库增删改查操作总结
May 23 PHP
php过滤htmlspecialchars() 函数实现把预定义的字符转换为 HTML 实体用法分析
Jun 25 PHP
关于php开启错误提示的总结
Sep 24 PHP
tp5框架基于ajax实现异步删除图片的方法示例
Feb 10 PHP
PHPstorm启用自动换行的方法详解(IDE)
Sep 17 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 中英文混合排版中处理字符串常用的函数
2007/04/12 PHP
ajax+php实现无刷新验证手机号的实例
2017/12/22 PHP
用JavaScript实现UrlEncode和UrlDecode的脚本代码
2008/07/23 Javascript
javascript innerHTML、outerHTML、innerText、outerText的区别
2008/11/24 Javascript
jquery 操作单选框,复选框,下拉列表实现代码
2009/10/27 Javascript
textarea中的手动换行处理的jquery代码
2011/02/26 Javascript
多引号嵌套的变量命名的问题
2014/05/09 Javascript
纯js和css实现渐变色包括静态渐变和动态渐变
2014/05/29 Javascript
jQuery实现表单提交时判断的方法
2014/12/13 Javascript
jQuery简单几行代码实现tab切换
2015/03/10 Javascript
JavaScript实现随机替换图片的方法
2015/04/16 Javascript
js 定义对象数组(结合)多维数组方法
2016/07/27 Javascript
JS实现的走迷宫小游戏完整实例
2017/07/19 Javascript
不到200行 JavaScript 代码实现富文本编辑器的方法
2018/01/03 Javascript
解决Linux无法正常安装与卸载Node.js的方法
2018/01/19 Javascript
详解JavaScript的BUG和错误
2018/05/07 Javascript
vue-cli配置flexible过程详解
2019/07/04 Javascript
VUEX采坑之路之获取不到$store的解决方法
2019/11/08 Javascript
[32:30]夜魇凡尔赛茶话会 第一期01:谁是卧底
2021/03/11 DOTA
Python实现多线程下载文件的代码实例
2014/06/01 Python
Python运维自动化之nginx配置文件对比操作示例
2018/08/29 Python
Python人工智能之路 之PyAudio 实现录音 自动化交互实现问答
2019/08/13 Python
Python使用matplotlib绘制三维参数曲线操作示例
2019/09/10 Python
Django 404、500页面全局配置知识点详解
2020/03/10 Python
Jupyter Notebook安装及使用方法解析
2020/11/12 Python
与世界上最好的跑步专业品牌合作:Fleet Feet
2019/03/22 全球购物
Guess美国官网:美国知名服装品牌
2019/04/08 全球购物
如何在发生故障的节点上重新安装 SQL Server
2013/03/14 面试题
焊接专业毕业生求职信
2013/10/01 职场文书
运动会邀请函范文
2014/01/31 职场文书
公司授权委托书格式样本
2014/10/01 职场文书
工作检讨书怎么写
2015/01/23 职场文书
小学中队活动总结
2015/05/11 职场文书
法制教育主题班会
2015/08/13 职场文书
房屋买卖定金协议书
2016/03/21 职场文书
六个好看实用的 HTML + CSS 后台登录入口页面
2022/04/28 HTML / CSS