[PHP]更新中间关联表数据的两种思路,php思路
/*---------------------------------------------------------------------------------------------------------
@黑眼诗人
---------------------------------------------------------------------------------------------------------*/
中间关联表:这里的中间表只存表1的主键和表2的主键,即多对多的形式。
(执行数据添加和删除为框架内部方法,不属于思路部分)
<span>/*<br />|-----------------------------------------------------------<br />|方法一:先全部删除旧数据,后添加新数据<br />|@chenwei <www.chenwei.ws> |-----------------------------------------------------------<br />*/ </span><span>$res</span> = <span>$this</span>->classes->classEdit(<span>$id</span>, <span>$data</span>); <span>//</span><span>修改主表数据</span> <span>if</span>(<span>$res</span><span>) { </span><span>//</span><span>先删除关联表数据</span> <span>$bool</span> = <span>$this</span>->lesson_classes->lessonClassesDel(<span>$id</span><span>); </span><span>if</span>(<span>$bool</span><span>) {<br /> //循环组装条件,添加数据 </span><span>foreach</span>(<span>$lesson_ids</span> <span>as</span> <span>$val</span><span>)<br /> { </span><span>$arr</span> = <span>array</span>('class_id'=><span>$id</span>, 'lesson_id'=><span>$val</span><span>); //数据<br /> </span><span>$res</span> = <span>$this</span>->lesson_classes->lessonClassesAdd(<span>$arr</span><span>); //执行添加 } } </span><span> </span><span>$this</span>->show_tips('操作成功!'<span>); } </span><span>else</span><span> { </span><span>$this</span>->show_tips('操作失败!'<span>); }<br /><br />//弊端:大批量删除数据这块儿不安全,存在一定程度的安全隐患。<br /></span>
<span>/*<br />|---------------------------------------------------------<br />|方法二:只添加需要的,只删要删的<br />|@chenwei <www.chenwei.ws> |---------------------------------------------------------<br />*/ //库中查出的旧数据:</span><span>$arr_old</span><span> (处理过的一维数组) //提交过来的新数据:</span><span>$arr_new</span><span> (得到的一维数组) </span><span>$intersect</span> = <span>array_intersect</span>(<span>$arr_old</span>, <span>$arr_new</span>); <span>//</span><span>交集(需要保留的部分,不用处理)</span> <span>$result_del</span> = <span>array_diff</span>(<span>$arr_old</span>, <span>$intersect</span>); <span>//</span><span>旧数据中需要删除的</span> <span>$result_add</span> = <span>array_diff</span>(<span>$arr_new</span>, <span>$intersect</span>); <span>//</span><span>新数据中需要增加的 //添加新增数据</span> <span>if</span>(<span>$result_add</span> && <span>is_array</span>(<span>$result_add</span><span>)) { </span><span>foreach</span>(<span>$result_add</span> <span>as</span> <span>$val</span><span>) { </span><span>$data_add</span> = <span>array</span>('class_id'=><span>$id</span>, 'lesson_id'=><span>$val</span><span>); //数据 $bool_add = </span><span>$this</span>->lesson_classes->lessonClassesAdd(<span>$data_add</span><span>); //执行添加 } } </span><span>//</span><span>删除需要清除的数据</span> <span>if</span>(<span>$result_del</span> && <span>is_array</span>(<span>$result_del</span><span>)) { </span><span>foreach</span>(<span>$result_del</span> <span>as</span> <span>$val</span><span>) { </span><span>$bool_del</span> = <span>$this</span>->lesson_classes->lessonClassesDel(<span>$id</span>, <span>$val</span><span>); //执行删除 } }<br /><br />if($bool_add && $bool_del)<br />{<br /> $this->show_tips('操作成功!');<br />}<br />else<br />{<br /> $this->show_tips('操作失败!');<br />}<br /><br /><br />//特点:有针对性的添加数据和删除数据,较第一种方法,安全性高</span>
如果有不正确之处或更好的处理方式,请留言交流。
select `a`.*, `b`.`导师姓名` WHERE `a`.`导师ID` = `b`.`导师ID`
A表中导师ID为索引
B表中导师ID为主键
这样都不明白。。无奈了
你把你数据库里字段名写出来,别用文字代替了
另外还有要检索什么东西
直接写好sql给你就是了
if ($condition == ""){
$condition = "WHERE sid LIKE \"%".$id."%\"";
} else{
$condition .= "AND sid LIKE \"%".$id."%\"";
}
改成
condition = " AND sid LIKE \"%".$id."%\"";
然后SQL该下
$sql = 'select `data`.*, `teacher`.`tname` FROM `data`, `teacher` WHERE `data`.`tid` = `teacher`.`tid`' . $condition
就这样
delete from A where A.ID in (select B.ID from B where B.sum >100) 这只是一个例子 连表删除 还有连表查询 select * from a left join b on a.id=b.id where a.id=1 连表更新 update a,b set a.id=12 wehre b.id=2 没有经过测试啊

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

WebStorm Mac版
便利なJavaScript開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)
