Seu problema é com os nomes dos campos em seu formulário HTML:
<input type="number" name="quantity" value="<?php echo $row['quantity']; ?>">
<input type="hidden" name="item_id" value="<? echo $row['item_id']; ?>">
Acho que você quis chamá-los de
quantity[]
e item_id[]
em vez disso, eles serão exibidos como arrays em seu $_POST
variável mais tarde, agora eles se sobrescrevem, tornando $_POST['item_id']
conter apenas o último id no banco de dados.