在不同的PHP代码行中准备语句,无需级联

在不同的PHP代码行中准备语句,无需级联,php,mysql,Php,Mysql,有没有办法用更少的行来编写这些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_par

有没有办法用更少的行来编写这些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\u sub
”表中删除


我只是想知道,如果不使用on DELETE CASCADE,是否可以在更少的行上执行此操作,但如果这样做是正确的,我可以将其保留。

users
表中的外部记录被删除时,您可以使用MySQL引用操作删除这些外部记录

us_sub
表中,按如下方式指定外键:

CREATE TABLE us\u sub(
--所有领域
外键(us_id_fk)引用删除级联上的用户(id)
);

看看delete cascade constraint您需要更多的行,因为这样的操作应该在事务中完成。如果您使用的是PDO,您可以消除bind_param,只在execute语句中发送值。我希望以一种不使用ON delete cascade的方式来完成。可能吗?但如果我的sql语句是正确的,我可以这样离开它。我只是想知道是否有可能在不使用CASCADE的情况下在更少的行上进行查询。一个准备好的语句一次只能执行一个查询,所以没有。当然,您可以使用
mysqli\u multi\u query
,但若您使用的是用户输入,那个么这可能会导致安全风险。是否有任何特殊原因不在DELETE CASCADE上使用
。我不想删除它,因为表中有数据。但是,我的sql语句工作正常。我的代码中是否存在安全风险?