我有以下查询来获取所有成员和一些信息。
$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/