PHP實(shí)現(xiàn)更新中間關(guān)聯(lián)表數(shù)據(jù)的兩種方法
本文以示例形式展示了PHP實(shí)現(xiàn)更新中間關(guān)聯(lián)表數(shù)據(jù)的兩種方法。分享給大家供大家參考之用。具體方法如下:
首先,中間關(guān)聯(lián)表:這里的中間表只存表1的主鍵和表2的主鍵,即多對多的形式。
執(zhí)行數(shù)據(jù)添加和刪除為框架內(nèi)部方法,不屬于思路部分。
方法一:先全部刪除舊數(shù)據(jù),后添加新數(shù)據(jù)
$res = $this->classes->classEdit($id, $data); //修改主表數(shù)據(jù) if($res) { //先刪除關(guān)聯(lián)表數(shù)據(jù) $bool = $this->lesson_classes->lessonClassesDel($id); if($bool) { //循環(huán)組裝條件,添加數(shù)據(jù) foreach($lesson_ids as $val) { $arr = array('class_id'=>$id, 'lesson_id'=>$val); //數(shù)據(jù) $res = $this->lesson_classes->lessonClassesAdd($arr); //執(zhí)行添加 } } $this->show_tips('操作成功!'); } else { $this->show_tips('操作失??!'); }
使用該方法弊端:大批量刪除數(shù)據(jù)這塊兒不安全,存在一定程度的安全隱患。
方法二:只添加需要的,只刪要?jiǎng)h的
//庫中查出的舊數(shù)據(jù):$arr_old (處理過的一維數(shù)組) //提交過來的新數(shù)據(jù):$arr_new (得到的一維數(shù)組) $intersect = array_intersect($arr_old, $arr_new); //交集(需要保留的部分,不用處理) $result_del = array_diff($arr_old, $intersect); //舊數(shù)據(jù)中需要?jiǎng)h除的 $result_add = array_diff($arr_new, $intersect); //新數(shù)據(jù)中需要增加的 //添加新增數(shù)據(jù) if($result_add && is_array($result_add)) { foreach($result_add as $val) { $data_add = array('class_id'=>$id, 'lesson_id'=>$val); //數(shù)據(jù) $bool_add = $this->lesson_classes->lessonClassesAdd($data_add); //執(zhí)行添加 } } //刪除需要清除的數(shù)據(jù) if($result_del && is_array($result_del)) { foreach($result_del as $val) { $bool_del = $this->lesson_classes->lessonClassesDel($id, $val); //執(zhí)行刪除 } } if($bool_add && $bool_del) { $this->show_tips('操作成功!'); } else { $this->show_tips('操作失??!'); }
該方法特點(diǎn):有針對性的添加數(shù)據(jù)和刪除數(shù)據(jù),較第一種方法,安全性高
希望本文所述對大家的PHP程序設(shè)計(jì)有所幫助。
- php 數(shù)組的合并、拆分、區(qū)別取值函數(shù)集
- PHP獲得數(shù)組交集與差集的方法
- PHP數(shù)組的交集array_intersect(),array_intersect_assoc(),array_inter_key()函數(shù)的小問題
- php數(shù)組函數(shù)序列之a(chǎn)rray_intersect() 返回兩個(gè)或多個(gè)數(shù)組的交集數(shù)組
- php數(shù)組操作之鍵名比較與差集、交集賦值的方法
- PHP數(shù)組對比函數(shù),存在交集則返回真,否則返回假
- php 歸并排序 數(shù)組交集
- PHP數(shù)組交集的優(yōu)化代碼分析
- php array_udiff_assoc 計(jì)算兩個(gè)數(shù)組的差集實(shí)例
- php基于數(shù)組函數(shù)實(shí)現(xiàn)關(guān)聯(lián)表的編輯操作示例
相關(guān)文章
php 多進(jìn)程編程父進(jìn)程的阻塞與非阻塞實(shí)例分析
這篇文章主要介紹了php 多進(jìn)程編程父進(jìn)程的阻塞與非阻塞,結(jié)合實(shí)例形式分析了php 多進(jìn)程編程中父進(jìn)程的阻塞、等待、子進(jìn)程退出、非阻塞等相關(guān)操作技巧,需要的朋友可以參考下2020-02-02Linux系統(tǒng)中設(shè)置多版本PHP共存配合Nginx服務(wù)器使用
這篇文章主要介紹了Linux系統(tǒng)中設(shè)置多版本PHP共存配合Nginx服務(wù)器使用的技巧,依靠php-fpm工具來進(jìn)行管理,需要的朋友可以參考下2015-12-12ThinkPHP跳轉(zhuǎn)頁success及error模板實(shí)例教程
這篇文章主要介紹了ThinkPHP跳轉(zhuǎn)頁success及error模板實(shí)例教程,可以幫助初學(xué)者進(jìn)一步熟悉ThinkPHP的頁面跳轉(zhuǎn)流程,需要的朋友可以參考下2014-07-07PHP 網(wǎng)絡(luò)開發(fā)詳解之遠(yuǎn)程文件包含漏洞
由于PHP支持使用相同的函數(shù)(Function)對本地文件和遠(yuǎn)程文件進(jìn)行操作。因此,一些惡意用戶通過強(qiáng)行使網(wǎng)站上的PHP代碼(Code)包含自己的文件來實(shí)現(xiàn)執(zhí)行自己腳本的目的。2010-04-04