Votre problème concerne les noms des champs de votre formulaire HTML :
<input type="number" name="quantity" value="<?php echo $row['quantity']; ?>">
<input type="hidden" name="item_id" value="<? echo $row['item_id']; ?>">
Je pense que vous vouliez les appeler quantity[]
et item_id[]
à la place, ils le seront et monteront sous forme de tableaux dans votre $_POST
variable plus tard, maintenant ils s'écrasent, faisant $_POST['item_id']
ne contient que le dernier identifiant de la base de données.