यह क्वेरी आपकी पोस्ट से सभी श्रेणियों को हटा रही है क्योंकि आप इसे अपने साथ बता रहे हैं कि क्लॉज कहां है। आप अनिवार्य रूप से कह रहे हैं, तालिका पोस्ट_श्रेणियों से प्रत्येक रिकॉर्ड को हटा दें जिसमें एक पोस्ट आईडी =$post_id है। इसे और अधिक विशिष्ट बनाने के लिए आपको अपने जहां क्लॉज में जोड़ना होगा।
$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])।