Ihr Problem liegt in den Namen der Felder in Ihrem HTML-Formular:
<input type="number" name="quantity" value="<?php echo $row['quantity']; ?>">
<input type="hidden" name="item_id" value="<? echo $row['item_id']; ?>">
Ich glaube, Sie wollten sie quantity[]
nennen und item_id[]
stattdessen werden sie als Arrays in Ihrem $_POST
angezeigt Variable später, jetzt überschreiben sie sich gegenseitig und machen $_POST['item_id']
nur die letzte ID in der Datenbank enthalten.