Hallo,
while($row = $db->fetch_array())
{
$price = price + $this->calculateDiscountPrice($row);
^-------^------------------------------------------------- da vermutlich liegt ein FehlerNein, das ist nicht der Fehler. Hatte das $ Zeichen nur gerade beim Posten vergessen.
Dann prüf mal, ob $this->calculateDiscountPrice($row) und $price (einfach die beiden Summanden) wirklich Zahlen (numeric) sind zum Zeitpunkt der Addition.
Gruss
apeiros