Il tuo problema è con i nomi dei campi nel tuo modulo HTML:
<input type="number" name="quantity" value="<?php echo $row['quantity']; ?>">
<input type="hidden" name="item_id" value="<? echo $row['item_id']; ?>">
Penso che tu volessi chiamarli quantity[] e item_id[] invece, così saranno e su come array nel tuo $_POST variabile in seguito, ora si sovrascrivono a vicenda, creando $_POST['item_id'] contengono solo l'ultimo ID nel database.