Diese Abfrage löscht alle Kategorien aus Ihrem Beitrag, weil Sie es mit Ihrer Where-Klausel angeben. Sie sagen im Wesentlichen, entfernen Sie jeden Datensatz aus der Tabelle posts_categories, der eine Post-ID =$post_id hat. Sie müssen Ihre where-Klausel ergänzen, um sie spezifischer zu machen.
$delete_id = mysqli_query($mysqli,"DELETE FROM posts_categories WHERE post_id = '" . $post_id . "' AND categoryID = '". $query_cat_id[$x] ."'");
Dies sagt jetzt dasselbe aus wie Sie, fügt aber einen zusätzlichen Qualifizierer hinzu. Löschen Sie nur Zeilen aus der Tabelle, in denen die post_id $post_id und die ID der Kategorie (Wert Ihres deaktivierten Kontrollkästchens) ist.
Haftungsausschluss:Ich vermute, wo Sie Ihre Kategorie-IDs in Ihrer Funktion speichern ($query_cat_id[$x]).