加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

在PHP上执行mysql级联删除

发布时间:2020-12-13 17:18:22 所属栏目:PHP教程 来源:网络整理
导读:我正在帮助我的朋友做一些数据库管理工作.基本上他有2个数据库,一个叫做城市,一个叫做运费.每个表都显示在一个网页中,每个记录旁边都有编辑和删除按钮.所以他可以通过网络删除数据库中的数据. 这笔交易是,我想在这个mysql数据库上进行级联删除,这样每次我删
我正在帮助我的朋友做一些数据库管理工作.基本上他有2个数据库,一个叫做城市,一个叫做运费.每个表都显示在一个网页中,每个记录旁边都有编辑和删除按钮.所以他可以通过网络删除数据库中的数据.

这笔交易是,我想在这个mysql数据库上进行级联删除,这样每次我删除city数据库中的一行时,同时删除运费率数据库中具有相同city_ID的相应行.我试着做一些mysql查询组合,但它没有用.这就是我所拥有的

require_once('../../model/city.php');
    if(isset($_POST['id'])){
        //edit or remove
        $id = $_POST['id'];
        $dbo = City::get_by_id($id);
        if($_POST['action'] == 'remove'){
            //remove
            //$dbo->delete();
            mysql_query("DELETE city.*,shipping_rate_loc.* FROM city c,shipping_rate_loc s WHERE c.ID_city = s.ID_city");
            echo "Data is removed.";
        }

正如你所看到的,我只是将mysql_query放在他之前的版本上

$dbo->delete();

设法删除城市的代码,但没有相关的运费.

我在PHP中使用mysql相当新手,所以任何人都可以帮我指出我的错误在哪里?非常感谢你 :)

更新:
我从答案中尝试了一些解决方案.他们都没有工作.即使我简化了事情.这让我想知道,在将php连接到数据库方面有什么错误吗?

解决方法

对此最好的方法是修改数据库设置以包括删除级联到shipping_rate_loc表的外键,例如,

create table city
(
    id    integer,name  varchar,...
    primary key (id)
);

create table shipping_rate_loc
(
    id          integer,city_from   integer,city_to     integer,...
    foreign key (city_from) references city(id) on delete cascade,foreign key (city_to) references city(id) on delete cascade
);

这样,当您从城市表中删除记录时

DELETE FROM city WHERE id = myid

表shipping_rate_loc中此城市位于city_from或city_to列中的所有记录将自动被数据库删除 – 无需您在PHP中执行任何操作.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读