आपकी समस्या आपके HTML फॉर्म में फ़ील्ड्स के नाम से है:
<input type="number" name="quantity" value="<?php echo $row['quantity']; ?>">
<input type="hidden" name="item_id" value="<? echo $row['item_id']; ?>">
मुझे लगता है कि आप उन्हें quantity[] कहना चाहते थे और item_id[] इसके बजाय, इसलिए वे आपके $_POST . में सरणियों के रूप में और ऊपर होंगे बाद में परिवर्तनशील, अब वे एक दूसरे को अधिलेखित कर देते हैं, जिससे $_POST['item_id'] बन जाता है डेटाबेस में केवल अंतिम आईडी होती है।