首页 > 解决方案 > 在没有 ON CASCADE 的情况下准备多行 PHP 代码中的语句

问题描述

有什么办法可以用更少的行来编写这些 sql 语句吗?

$sentence_1 = $conn->prepare("DELETE FROM us_sub WHERE user_id_fk=?");
$sentence_1->bind_param("i", $id);
$sentence_1->execute();

$sentence_2 = $conn->prepare("DELETE FROM users WHERE id=?");
$sentence_2->bind_param("i", $id);
$sentence_2->execute();

它的作用是从表“ users”中删除用户,但由于它具有外键,因此必须先从“ us_sub”表中删除它。

我只是想知道是否可以在不使用 ON DELETE CASCADE 的情况下在更少的行上完成它,但如果它是正确的,我可以离开它。

标签: phpmysql

解决方案


当表中的记录被删除时,您可以使用 MySQL 引用操作ON DELETE CASCADE删除外部记录users

在您的us_sub表中,像这样指定外键:

CREATE TABLE us_sub (
    --All the fields
    FOREIGN KEY (us_id_fk) REFERENCES users (id) ON DELETE CASCADE
);

推荐阅读