Тази заявка изтрива всички категории от публикацията ви, защото вие я казвате с клауза where. По същество казвате, премахнете всеки запис от таблицата posts_categories, който има идентификатор на публикация =$post_id. Трябва да добавите към вашата клауза where, за да я направите по-конкретна.
$delete_id = mysqli_query($mysqli,"DELETE FROM posts_categories WHERE post_id = '" . $post_id . "' AND categoryID = '". $query_cat_id[$x] ."'");
Това сега казва същото, което сте направили, но добавя допълнителен квалификатор. Изтрийте само редове от таблицата, където post_id е $post_id и идентификаторът на категорията е (стойността на квадратчето за отметка без отметка).
Отказ от отговорност:Предполагам къде съхранявате идентификаторите на категориите си във функцията си ($query_cat_id[$x]).