Su problema es con los nombres de los campos en su formulario HTML:
<input type="number" name="quantity" value="<?php echo $row['quantity']; ?>">
<input type="hidden" name="item_id" value="<? echo $row['item_id']; ?>">
Creo que querías llamarlos quantity[]
y item_id[]
en cambio, lo harán y aparecerán como matrices en su $_POST
variable más tarde, ahora se sobrescriben entre sí, haciendo $_POST['item_id']
solo contiene la última identificación en la base de datos.