【问题标题】:Delete user completely [closed]完全删除用户[关闭]
【发布时间】:2014-08-22 19:45:10
【问题描述】:

如果用户或管理员想要从站点中完全删除用户。您将如何设置查询以从包含用户 ID 的每个表/子表中删除该用户。这是我的表的列表,其中包含单个用户的可能 ID 所在的子表。

  1. 用户
  2. 相册 - user_id
  3. 阻止 - user1_id
  4. blogdata_cmets - comment_poster
  5. blogdata_feedback - feedback_userid
  6. 朋友 - user1_id 或 user2_id
  7. 消息 - message_creator OR message_target
  8. 通知 - notification_targetuser 或 notification_triggeredby
  9. photo_cmets - photo_comment_poster
  10. streamdata - streamitem_creator 或 streamitem_target
  11. streamdata_cmets - 评论海报
  12. streamdata_feedback - feedback_userid
  13. 用户照片 - photo_ownerid

【问题讨论】:

  • 如果你有外键约束,那么你可以使用DELETE CASCADE,否则你可能需要依次从每个表中删除
  • 您可以使用 ORM,例如 Doctrine,在这种情况下,它可能会使生活轻松 100 倍。
  • 我可以在每张表上设置一个外键吗?我是否将其设置为每个包含用户特定 ID 的子表?
  • @bali182 与“正确”不同的是完整的
  • 这样的? ALTER albums ADD CONSTRAINT user1_id FOREIGN KEY foreign_key_name(user_id) REFERENCES parent_table(user) ON DELETE action ON UPDATE action

标签: php delete-row sql-delete


【解决方案1】:

@Dave 我可能对此不以为然,但我认为您可以做这样的事情,这也会阻止用户创建新帐户。

您显然需要制作自己的以下非常基本代码的版本,但它应该可以工作吗?

编辑 只是认为 ud 已经需要他们的 ip 了

$db = new mysqli ('host', 'username', 'password', 'database');

$removeUser = "DELETE FROM (user, albums, block, and-so-on) WHERE `user-id`='$user'";

if(removeUser = $db->query($removeUser)){
    $ipAddr = $_SESSION['REMOTE_ADDR'];
    $banList = "INSERT INTO banned (ipAddr) VALUES ('$ipAddr')"

        die($user . 'removed from all tables');

    if($banList = $db->query($banList)){
        die($user . 'Added to banned list');
    }else{
        die('Error adding ' . $user . ' to banned list');
    }
}else{
    die ('Unable to remove user from all tables');
}

【讨论】:

  • 哇。这是一个非常好的功能,我什至没有想到。谢谢你的模仿。
  • 旁注:WHERE user-id='$user' 中的 user-id 需要用反引号包裹 ` 或使用下划线代替 WHERE user_id='$user' - SQL 会将其解释为数学问题 (减号)。只是一个快速的“FYI”;)另外,一些缺少的分号。
  • 我进行了编辑以便为可能阅读此内容的其他人清理它,我知道它的边缘肯定很粗糙,但试图将他指向正确的方向,而不是编写他可以编写的代码只需复制并粘贴:)
  • 我不是在批评它;)只是说以防有人访问了这个问题。干得好+1
猜你喜欢
  • 2011-06-30
  • 2012-06-06
  • 2016-12-01
  • 1970-01-01
  • 2012-01-02
  • 2017-01-14
  • 2011-02-21
  • 2013-06-08
  • 1970-01-01
相关资源
最近更新 更多