[PHP]更新中间关联表数据的两种思路
--------------------------------------------------------------------------------------------------------------
中间关联表:这里的中间表只存表1的主键和表2的主键,即多对多的形式。
(执行数据添加和删除为框架内部方法,不属于思路部分)
/*
|-----------------------------------------------------------
|方法一:先全部删除旧数据,后添加新数据
|@chenwei <www.farwish.com>
|-----------------------------------------------------------
*/
$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('操作失败!');
} //弊端:大批量删除数据这块儿不安全,存在一定程度的安全隐患。
/*
|---------------------------------------------------------
|方法二:只添加需要的,只删要删的
|@chenwei <www.farwish.com>
|---------------------------------------------------------
*/
//库中查出的旧数据:$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('操作失败!');
} //特点:有针对性的添加数据和删除数据,较第一种方法,安全性高
如果有不正确之处或更好的处理方式,请留言交流。
Link: http://www.cnblogs.com/farwish/p/3938575.html
@黑眼诗人 <www.farwish.com>
[PHP]更新中间关联表数据的两种思路的更多相关文章
- oracle删除表数据的两种的方式
转自:https://blog.csdn.net/qq_37840993/article/details/82490787 平时写sql中我们都会用到删除语句,而平时删除表数据的时候我们经常会用到两种 ...
- oracle中清空表数据的两种方法
1.delete from t 2 .truncate table t 区别: 1.delete是dml操作:truncate是ddl操作,ddl隐式提交不能回滚 2.delete from t可以回 ...
- ORACLE 查询一个数据表后通过遍历再插入另一个表中的两种写法
ORACLE 查询一个数据表后通过遍历再插入另一个表中的两种写法 语法 第一种: 通过使用Oracle语句块 --指定文档所有部门都能查看 declare cursor TABLE_DEPT and ...
- strus2中获取表单数据 两种方式 属性驱动 和模型驱动
strus2中获取表单数据 两种方式 属性驱动 和模型驱动 属性驱动 /** * 当前请求的action在栈顶,ss是栈顶的元素,所以可以利用setValue方法赋值 * 如果一个属性在对象栈,在页面 ...
- 把JSON数据载入到页面表单的两种思路(对easyui自带方法进行改进)
#把JSON数据载入到页面表单的两种思路(对easyui自带方法进行改进) ##背景 项目中经常需要把JSON数据填充到页面表单,一开始我使用easyui自带的form load方法,觉得效率很低,经 ...
- oracle 批量删除表数据的4种方式
1.情景展示 情景一: 删除PRIMARY_INDEX_TEST表中,MINDEX_ID字段为空的数据 情景二: 删除VIRTUAL_CARD_TEST表中的脏数据 2.解决方案 情景一的解决方案 ...
- oracle 插入表数据的4种方式
1.往表中插入一整行数据 /*方法一*/ INSERT INTO 表名 VALUES(val1,val2,val3,...); /*方法二*/ '; 如: ,, FROM DUAL; 注意: 2. ...
- SparkStreaming与Kafka,SparkStreaming接收Kafka数据的两种方式
SparkStreaming接收Kafka数据的两种方式 SparkStreaming接收数据原理 一.SparkStreaming + Kafka Receiver模式 二.SparkStreami ...
- 【代码笔记】iOS-向服务器传JSON数据的两种方式
一,代码. - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. ...
随机推荐
- 加拿大大学排名 by USNews
https://www.usnews.com/education/best-global-universities/canada 2017综合排名: CS Subject:
- unity3d动态创建一个文本
2D文本需要Canvas和EventSystem,最好使用Editor来添加: 动态显示一个文本,采用3D Text的方式: GameObject text = new GameObject(); t ...
- Hive性能调优
表分为内部表.外部表.分区表,桶表.内部表.外部表.分区表对应的是目录,桶表对应目录下的文件.
- Submline Text 3插件sublimeTmpl添加新模板
1.安装 一般安装Package Control 2.插件 添加模板 1).进入Preferences->Browse Packages->SublimeTmpl->template ...
- C# 运用反射把实体类反射成你所想要的格式
下面是要转换成的Xml格式 <?xml version="1.0" encoding="UTF-8" ?> <NDEML templateVe ...
- 了解Katalon的安装及基本使用(for mac)
一.整体了解: 2018 top 6的自动化测试工具(网上了解): 1. Selenium 2. Katalon Studio 3. UFT 4. Watir 5. IBM Rational Func ...
- 500 Internal Privoxy Error
打开网站突然发现网站无法打开了,一脸懵逼,服务器重启也不行,明明能ping通,网上查的答案千奇百怪的 500 Internal Privoxy Error Privoxy encountered an ...
- 定位到行的快捷键iOS
1. 文件 CMD + N: 新文件CMD + SHIFT + N: 新项目CMD + O: 打开CMD + S: 保存CMD + SHIFT + S: 另存为CMD + W: 关闭窗口CMD + S ...
- windows python读取grib2数据
一.环境准备 (1).python3环境 (2).wgirb工具(用于读取grib1文件),下载地址: ftp://ftp.cpc.ncep.noaa.gov/wd51we/wgrib (3).wg ...
- 21纯 CSS 创作文本滑动特效的 UI 界面
原文地址:https://segmentfault.com/a/1190000014842868 简化版地址:https://scrimba.com/c/cgaZLh6 感想:笨蛋,想不出自己的东西. ...