Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从具有公共字段的多个表中删除_Php_Mysql - Fatal编程技术网

Php 从具有公共字段的多个表中删除

Php 从具有公共字段的多个表中删除,php,mysql,Php,Mysql,嗨,我有两张桌子,如下所示 tbl_收藏夹_属性 1最喜爱的\u属性\u id 2最喜爱的\u属性\u属性\u id 3最喜爱的\u属性\u用户\u id tbl_财产 1物业编号 2属性\用户\ id 现在我想删除基于用户的字段,如下所示 $user_id = $_SESSION['user_id']; $delete_tbl_favorite_properties = $con->prepare("DELETE FROM tbl_favorite_properties WHERE f

嗨,我有两张桌子,如下所示

tbl_收藏夹_属性

1最喜爱的\u属性\u id


2最喜爱的\u属性\u属性\u id

3最喜爱的\u属性\u用户\u id

tbl_财产

1物业编号

2属性\用户\ id

现在我想删除基于用户的字段,如下所示

$user_id = $_SESSION['user_id'];

$delete_tbl_favorite_properties = $con->prepare("DELETE FROM tbl_favorite_properties WHERE favorite_properties_user_id='$user_id'");
$delete_tbl_favorite_properties-> execute();

$delete_tbl_property = $con->prepare("DELETE FROM tbl_property WHERE property_user_id='$user_id'");
$delete_tbl_property-> execute();

现在我想删除tbl_favorite_属性(favorite_属性_属性_id)中与tbl_属性(属性_id)中的此用户属性匹配的所有属性

我已经能够使用mysql在innodb cascade delete中实现这一点,但需要一个php解决方案

这里有一个解决办法

但是那里的列名是相同的,而我的不同


我不熟悉在多个表中构造查询…

我认为您想要的行为是删除属于某个用户的
tbl\u属性中的属性,但同时删除
tbl\u收藏夹属性中相应的收藏夹:

DELETE t1, t2
FROM tbl_property t1
LEFT JOIN tbl_favorite_properties t2
    ON t1.property_id = t2.favorite_properties_property_id
WHERE t1.property_user_id = '$user_id'

最初让我感到不舒服的是,两个表都有一个user_id列。如果您总是计划通过从
tbl\u属性
的联接进入该表,则您可能不需要
tbl\u收藏夹属性
中的用户\u id。您当前删除记录的逻辑仅使用用户id,不涉及两个表之间的关系。收藏夹属性\u属性\u id和属性\u id是否相关对于给定用户,是否需要从
tbl_属性
中删除所有属性记录?不,我在删除用户时已经可以这样做,他有一些其他用户喜欢的属性,但如果在tbl_属性中删除这些属性,则会在tbl_收藏夹属性中为其他用户显示错误(因为此第二个用户具有不再存在的偏好属性)…因此,所有这些属性也必须从tbl_favorite_属性中删除,这些属性属于正在删除其帐户的用户。我想我可以在两个查询部分中执行此操作,首先从该用户拥有的tbl_属性中选择所有属性并放入数组,然后使用in函数从tbl_favorite_属性中删除这些属性。这将是两步查询也许有很好的知识的人可以给我一个优雅的方式来编写代码。他们的不同之处在于..用户id:在tbl_favorite_属性中,它指的是喜欢该属性的人…但在tbl_属性中,它指的是发布该属性的人property@DragonFire谢谢你的评论,现在我感觉好多了关于你的设计。这是唯一有效的东西是favorite_properties_id应该是favorite_properties_property_id…我知道我给数据库起的名字非常混乱,对此表示抱歉