Wahrscheinlich am besten, dies als einzelnes Stück SQL zu tun:-
UPDATE stock a INNER JOIN order b ON a.part = b.part
SET a.available = a.available - b.qty
WHERE b.invoice` = '$order'
Achten Sie darauf, dass Sie dies nicht einfach mehrmals wiederholen, ohne zu überprüfen, ob eine Bestellung nicht bereits zur Aktualisierung des Bestands verwendet wurde
Wenn Sie auf diese Weise 1000 Artikel in der Bestellung haben, ist dies eine einzige Abfrage. Eine Auswahl durchzuführen und dann die Ergebnisse zu durchlaufen, würde 10001 Abfragen erfordern.