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.