搜索
首页php教程php手册[PHP]更新中间关联表数据的两种思路,php思路

[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>

 

如果有不正确之处或更好的处理方式,请留言交流。

MYSQL+PHP 数据库中两张表A,B的关联问题

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
就这样
 

在php中,用CI框架开发程序,有两个表相连接,可以同时删除两个表相关联的数据?怎写删除的代码?

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 没有经过测试啊
 

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
4 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
4 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
4 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它们
4 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

Dreamweaver Mac版

Dreamweaver Mac版

视觉化网页开发工具

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能

Atom编辑器mac版下载

Atom编辑器mac版下载

最流行的的开源编辑器

VSCode Windows 64位 下载

VSCode Windows 64位 下载

微软推出的免费、功能强大的一款IDE编辑器

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)