To zapytanie usuwa wszystkie kategorie z twojego postu, ponieważ mówisz mu, że z tobą klauzula where. Zasadniczo mówisz, usuń każdy rekord z tabeli posts_categories, który ma identyfikator postu =$post_id. Musisz dodać do klauzuli where, aby była bardziej konkretna.
$delete_id = mysqli_query($mysqli,"DELETE FROM posts_categories WHERE post_id = '" . $post_id . "' AND categoryID = '". $query_cat_id[$x] ."'");
To teraz mówi to samo, co zrobiłeś, ale dodaje dodatkowy kwalifikator. Usuń tylko wiersze z tabeli, w których post_id to $post_id, a identyfikator kategorii to (wartość niezaznaczonego pola wyboru).
Zastrzeżenie:zgaduję, gdzie przechowujesz identyfikatory kategorii w swojej funkcji ($query_cat_id[$x]).