Dit problem er med navnene på felterne i din HTML-formular:
<input type="number" name="quantity" value="<?php echo $row['quantity']; ?>">
<input type="hidden" name="item_id" value="<? echo $row['item_id']; ?>">
Jeg tror, du mente at kalde dem quantity[]
og item_id[]
i stedet, så de vil og op som arrays i din $_POST
variabel senere, nu overskriver de hinanden, hvilket gør $_POST['item_id']
indeholder kun det sidste id i databasen.