MySQL PDO删除超过2天的用户,使用user_id从其他表中删除内容

时间:2013-08-11 20:21:31

标签: mysql sql pdo

我正在建立一个小型系统来清理数据库。访问该站点的每个人都被放入数据库,但如果他/她没有注册,他/她应该用cronjob从数据库中删除,如果他/她第一次访问该站点的时间长于2天。日期作为时间戳存储在MySQL中,但如下所示:2013-06-05 01:18:43

所以我想做的是以下内容:

$STH = $DBH->query("DELETE FROM user WHERE type=0 AND joindate < ".date('d-m-Y H:i:s',time()-$userLife));

像这样,时间戳的格式与MySQL中的相同。我正在使用$userLife,因此我可以在脚本开头轻松调整此变量。

但问题是,我还需要对包含此user_id的其他表进行查询。例如表pages

id | user_id | level | time | views

在此表中,可能存在多个user_id

的实例

这可以在一个查询中完成,还是我需要首先遍历所有用户,然后为每个用户执行3个其他表的DELETE查询,然后在该循​​环之后删除所有user个?

1 个答案:

答案 0 :(得分:1)

理想情况下,您使用FOREIGN KEY约束定义事物,并定义ON DELETE CASCADE,它会自动删除所有相关数据。如果由于某种原因这不可能(例如坚持使用MyISAM表),你可以简单地JOIN相关表(是的,你可以delete from more then 1 table at once)。如果这是你第一次这样做,那就在测试数据库上做,当然不是在生产中。