php - 如果成员不再属于组,则从数据库中删除行

标签 php mysql mysqli sql-delete

我有以下查询来获取所有成员和一些信息。

$stmt = $conn->prepare("select m.`name`, m.`id`, m.`group_id`, p.`field_1`, g.`data1`, g.`data2`
                from members m 
                inner join pfields p on m.`id` = p.`id`
                inner join groups g on g.`g_id` = m.`group_id`
                where m.`group_id` = 1");
$stmt->execute();
$result = $stmt->get_result();

我有以下代码将新成员插入到我的成员列表中。

while($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
    //code update members
    $stmt = $conn->prepare("INSERT INTO memberlist (id, name) VALUES (?, ?)");
    $stmt->bind_param("ss", $row['id'], $row['name']);
    $stmt->execute();
}

但是,我注意到,如果成员不再是社区的一部分,该名称永远不会被删除,因为我只是添加新名称。

删除是通过DELETE进行的,但是检查该成员是否仍然是来自members的原始查询中的组的一部分的最简单方法是什么,如果不再是,则删除具有 memberlist 中该 id 的成员?在下面的示例中,我想从memberlist中删除Arnold,因为他不再属于members中的group_id 1。

members                    memberlist
id | name   | group_id     id | name   | group_id
-----------------------    ----------------------
1  | Donald | 1            1  | Donald | 1 
13 | Jeff   | 1            13 | Jeff   | 1
25 | Arnold | 3            25 | Arnold | 1

最佳答案

每次删除时,您都可以执行类似这样的查询:

DELETE ml FROM memeberlist ml
LEFT JOIN members m ON m.id = ml.id
WHERE m.id IS NULL

关于php - 如果成员不再属于组,则从数据库中删除行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55578362/

相关文章:

mysql - 使用 Spree commerce 将 Capistrano 部署到 Ubuntu 服务器

mysql - 如何在不询问MySQL的情况下检查MySQL表是否存在

C# mysql插入语句。参数化查询示例?

php - 如何使用 mysqli 正则表达式匹配哈希标签

php - fatal error : Call to a member function fetch_assoc() on a non-object

php - 页面刷新和数据库检查后值+1

php - 当该帖子的标签等于一个主题时,不显示重复的帖子

javascript - 如何将一部分图像转换为可点击按钮?

php - 缓存不工作

php - 将 FORM 提交到 Mysql 时出现问题