What are some best practices for handling changes to a user's selected disciplines in PHP when updating database records?

When a user updates their selected disciplines in PHP, it is important to handle the changes properly to update the database records accordingly. One approach is to first retrieve the current user's selected disciplines from the database, compare them with the new selections, and then update the database records accordingly by adding new selections and removing any deselected disciplines.

// Retrieve current user's selected disciplines from the database
$currentDisciplines = $db->query("SELECT discipline_id FROM user_disciplines WHERE user_id = $userId")->fetchAll(PDO::FETCH_COLUMN);

// Compare current disciplines with new selections
$selectedDisciplines = $_POST['disciplines'];
$disciplinesToAdd = array_diff($selectedDisciplines, $currentDisciplines);
$disciplinesToRemove = array_diff($currentDisciplines, $selectedDisciplines);

// Add new disciplines
foreach ($disciplinesToAdd as $disciplineId) {
    $db->query("INSERT INTO user_disciplines (user_id, discipline_id) VALUES ($userId, $disciplineId)");
}

// Remove deselected disciplines
foreach ($disciplinesToRemove as $disciplineId) {
    $db->query("DELETE FROM user_disciplines WHERE user_id = $userId AND discipline_id = $disciplineId");
}