У меня следующий запрос, чтобы получить всех участников и некоторую информацию.
$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
, и еслибольше нет, удалить участника с этим id
из memberlist
?В приведенном ниже примере я хочу удалить Арнольда из списка участников, потому что его больше нет в 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